Итак, как компьютер интерпретирует результат беззнаковой / подписанной арифметики, если он будет использоваться снова?

Прежде всего, учитывая, что компьютер / процессор не заботится о том, является ли данное число в двоичном формате подписанным или беззнаковым числом, в зависимости от инструкций, которые он получает в операционном коде, он выполняет арифметику со знаком или без знака, и в данном случае он будет интерпретировать число со знаком или без знака.

subu rd,rs,rt

rs хранит 11100 rt имеет 01000. Предположим, предполагается, что он выполняет беззнаковую арифметику 11100–01000, результатом будет, очевидно, 10100, что равно 20 в десятичная запись, так как мы выполнили беззнаковую арифметику (вычитание). И этот номер временно хранится где-то в памяти по адресу, например "rd", чтобы использовать его снова.

Означает ли это, что число, хранящееся в ячейке rd, в будущем может использоваться только для беззнаковой арифметики.

Если да: поясните следующее. Как компьютер действительно знает, что он должен применять беззнаковую арифметику всякий раз, когда он использует данные в rd в следующий раз. Где хранятся данные, связанные с этим (этот rd может использовать только беззнаковую арифметику).

Значит ли это, что компьютер действительно заботится о том, является ли число, хранящееся по адресу rd, подписанным или беззнаковым, что будет противоречить первому утверждению.

Если нет: почему его можно использовать для другого типа арифметики? не буду делать это создавать какие-либо осложнения.


person vrogros    schedule 22.08.2015    source источник
comment
Последний бит числа используется как сигнальный флаг, когда вы используете числа со знаком, но если вы не используете числа со знаком, этот бит будет использоваться для сохраняемого значения, что означает, что с числами со знаком диапазон значений вы можете store уменьшается. Теперь что касается второго вопроса, я считаю, что это подсказка самого языка, чтобы определить, использовать ли последний бит или нет.   -  person Carlos H Romano    schedule 23.08.2015
comment
Можете ли вы пояснить, что вы имеете в виду под сигнальным флагом @chromano   -  person vrogros    schedule 23.08.2015
comment
это немного зарезервировано для определения, является ли число положительным или отрицательным ... поэтому, если оно равно 1, оно отрицательное, если 0, то положительное ... Очевидно, что все становится немного сложнее, и я рекомендую вам прочтите эту статью: en.wikipedia.org/wiki/Signed_number_presentations   -  person Carlos H Romano    schedule 23.08.2015
comment
если есть 8 бит для хранения беззнакового числа, то тот же регистр может использоваться для хранения подписанного числа, и если нет какого-либо дополнительного бита, то есть 9-го бит (который, предположительно, является флагом, о котором вы говорите), чтобы представить формат целого числа со знаком / без знака тогда компьютер не сможет различить эти два представления. и я нигде не слышал о таком флаге! @chromano   -  person vrogros    schedule 23.08.2015
comment
Флаг находится в последнем бите (8-м), поэтому для целых чисел со знаком вы можете хранить только значения от -127 до 127.   -  person Carlos H Romano    schedule 23.08.2015
comment
скажем, 11000001 хранится в 8-битном регистре, какое это представление? на самом деле вы не можете сказать, что он без подписи / подписи. MSB, о котором вы говорите, является флагом на самом деле знаковым битом в подписанной форме, поэтому мы получаем диапазон от -127 до 127, где, как и в беззнаковой форме, мы можем представлять числа только в их величине, т.е. положительные, они лежат в диапазоне от 0 до 255, количество чисел, которые вы можете представить в формате bth, совпадает с @chromano   -  person vrogros    schedule 23.08.2015


Ответы (1)


Означает ли это, что число, хранящееся в ячейке rd, в будущем может использоваться только для беззнаковой арифметики.

No.

Если нет, то почему его можно использовать для другого типа арифметики?

Информация, определяющая, является ли число подписанным или беззнаковым, не хранится, и в будущем его можно будет использовать как для знаковой, так и для беззнаковой арифметики. Процессор ничего не знает об истории данных в регистре, когда он обрабатывает их с последующей инструкцией, поэтому ответ на почему? прост: ничто не препятствует этому.

Не вызовет ли это каких-либо осложнений?

Я полагаю, что это возможно, если вы работаете на языке ассемблера и выбираете без причины переключаться между беззнаковой и подписанной арифметикой. Обычно люди работают на скомпилированных языках, таких как C, и в этом случае каждое число имеет тип и либо подписано, либо беззнаковое, а во время компиляции язык генерирует машинный код, который использует арифметические операции, соответствующие типу числа.

person Paul    schedule 22.08.2015