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

является ли дополняющая нотация двух положительного числа такой же, как и его двоичное представление?

7 ответов


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

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

0000 0111=7 два дополнения 1111 1001= -7

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

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

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

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


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

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

Итак, 7 в дополнении к двум обозначение 00000111, как и целое число без знака. И -7 в дополнении к двум-11111001.

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


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

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

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


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

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


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


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


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