Является ли двойная запись положительного числа одним и тем же числом? - PullRequest
10 голосов
/ 27 апреля 2009

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

Ответы [ 7 ]

9 голосов
/ 27 апреля 2009

Некоторые ответы и комментарии приводят к путанице между «нотацией дополнения к двум» и «дополнением числа к двум». Возможно, этот вопрос нужно немного прояснить, но он явно задает вопрос о «двоичной записи».

Нотация дополнения к двум включает как положительные, так и отрицательные числа. Двоичные числа могут означать много вещей, поэтому для определения того, что должно представлять любое двоичное число, нужно сначала знать, какая нотация или кодировка используется. Двоичное число может быть целым числом без знака, целым числом с двумя дополнениями, числом с плавающей запятой IEEE, строкой символов или чем-то еще целиком.

Итак, 7 в двоичной записи дополнения - это 00000111, так же, как в виде целого числа без знака. И -7 в двоичной записи дополнения - 11111001.

Итак, да, положительные целые числа в двоичной записи дополнения представлены так же, как и в целых числах без знака (при условии, что это допустимое целое число для количества используемых битов).

9 голосов
/ 27 апреля 2009

Я думаю, что вы что-то здесь путаете. Положительные целые числа обычно хранятся в виде простых двоичных чисел. 1 - 1, 10 - 2, 11 - 3 и т. Д. Отрицательные целые числа сохраняются как дополнение двух их абсолютного значения , то есть соответствующего положительного целого числа. При использовании этих обозначений дополнение двух положительного числа является отрицательным числом.

Чтобы перевернуть знак числа, вы всегда вычисляете дополнение этих двух чисел: переверните все биты, а затем добавьте 1. Это не зависит от того, является ли исходное число положительным или отрицательным.

Пример: двоичное двоичное представление со знаком 3 в 8-битовом формате - 00000011. Чтобы перевернуть знак, сначала нужно перевернуть все биты (11111100), а затем добавить 1 (11111101). Итак, -3 - это 11111101. Чтобы снова перевернуть знак, сначала нужно перевернуть все биты (00000010), затем добавить 1 (00000011), и вы увидите, что это то же самое 3.

7 голосов
/ 27 апреля 2009

Является ли двойная запись положительного числа одним и тем же числом?

Хороший пример из wiki , что связь с дополнением до двух реализуется, если заметить, что 256 = 255 + 1, и (255 - x) является дополнением единицы x

0000 0111 = 7 дополняют два 1111 1001 = -7

как это работает, так это то, что msb (старший значащий бит) получает отрицательное значение, поэтому в случае выше

-7 = 1001 = -8 + 0+ 0+ 1

Редактировать- Положительное число, записанное в двоичной записи, совпадает с числом, записанным в беззнаковой записи (хотя старший значащий бит должен быть равен нулю). Отрицательное число может быть записано в двоичной записи дополнения путем инвертирования всех битов его абсолютного значения с последующим добавлением единицы к результату. Обозначение с двумя дополнениями

Максимальное число, которое может быть представлено с помощью k-битной нотации с дополнением до двух, равно 2 ^ (k-1) -1

6 голосов
/ 22 декабря 2009

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

Я все еще учусь, студент первого курса информатики, надеюсь, это помогло.

1 голос
/ 27 апреля 2009

Нет, дополнение 2 положительного числа не совпадает с номером, они не сохраняются в форме дополнения 2 в памяти. В случае положительных чисел они сохраняются как есть в памяти, только в случае отрицательных чисел представление находится в форме дополнения 2 Отрицательные числа хранятся в форме дополнения 2, потому что дополнение 2 хорошо для вычитания. Пример: 5 + -7 = -2 Здесь -7 хранится в форме дополнения 2 (1001). 0101 + 1001 = 1110 Обратите внимание, что мы автоматически получаем отрицательный ответ

0 голосов
/ 17 мая 2009

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

0 голосов
/ 27 апреля 2009

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

...