Вопрос по – Как компьютер распознает целое число со знаком или без знака?

7

Два дополнения установлены, чтобы облегчить компьютеру вычисление вычитания двух чисел. Но как компьютер различает целое число, целое число со знаком или целое число без знака? Это просто 0 и 1 в его памяти.

Например,1111 1111 в памяти компьютера может представлять число 255, но также может представлять -1.

Я не спрашиваю, как подписанный номер представлен на компьютере viperchaos
ты прочитал ссылки? они были опубликованы, потому что они имеют отношение к вашему вопросу mtijn

Ваш Ответ

2   ответа
4

Это не различает их. Но с дополнением, вычисление то же самое:

Ниже,d будут добавлены к десятичным числам, иb в двоичные числа. Вычисления будут на 8-битных целых числах.

-1d + 1d = 1111 1111b + 1b = 1 0000 0000b

Но так как мы переполнились (да, это 80с и1 на 8-битных целых числах), результат равен 0.

-2d + 1d = 1111 1110b + 1b = 1111 1111b = -1d

-1d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d

-1d + -1d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = -2d

А если учесть эти операции над беззнаковыми (двоичные значения не изменятся):

255d + 1d = 1111 1111b + 1b = 1 0000 0000b (this overflows) = 0d

254d + 1d = 1111 1110b + 1b = 1111 1111b = 255d

255d + 2d = 1111 1111b + 10b = 1 0000 0001b (this overflows) = 1b = 1d

255d + 255d = 1111 1111b + 1111 1111b = 1 1111 1110b (this overflows) = 1111 1110b = 2d

Таким образом, неподписанные и подписанные являются просто визуальным представлением неподписанных, используемых только при отображении человеку :-)

12

Подписанные и неподписанные используют одни и те же данные, но разные инструкции.

Компьютер хранит целые числа со знаком и без знака как одни и те же данные. То есть 255 и -1 одинаковые биты. Однако вы указываете компилятору, какой тип имеет переменная. Если он подписан, компилятор использует подписанные операторы для управления переменными (например, IDIV), а когда он не подписан, он использует другую инструкцию (например, DIV). Таким образом, компилятор создает программу, которая сообщает процессору, как интерпретировать данные.

Error: User Rate Limit Exceededinstruction referenceError: User Rate Limit Exceeded

Похожие вопросы