Как 0 имеет два значения в одном дополнении?


12

Говорят, что в дополнении 2 0 имеет только одно значение, тогда как в дополнении 1 оба +0 и -0 имеют отдельные значения. Кто они такие?


8
0 не имеет двух значений. Имеет значение 0. Период. Что же есть в 1 в дополнении два представления . Но это не совсем что-то уникальное. Например, число 10 имеет бесконечно много представлений в десятичном виде: 10, +10, 010, +010, 0010, +0010,… и так далее.
Йорг Миттаг

Именно. Эти значения являются только классами эквивалентности представлений, и то , что называется «значением 0» случаются класс эквивалентности , содержащий как 000...0и 111...1. Но эти два представления все еще составляют только одно значение.
оставил около

Ответы:


19

В дополнение к 1 вы просто инвертируете все биты.

Рассмотрим эти 2 примера (при условии 8 бит):

  • 4=00000100 , поэтому4=11111011

  • 0=00000000 , поэтому .0=11111111

Таким образом, у вас есть 2 способа представить число 0

В дополнении 2 вы добавляете 1 к представлению дополнения 1 отрицательного числа

  • 41111101111111100
  • 01111111100000000

Таким образом, у вас есть только один способ представить 0 в этом случае

Как видно из приведенных примеров, разница в том, что:

  • 27+1271
  • 27271

7
Возможно, стоит упомянуть, что у дополнения 2 есть больше преимуществ, кроме еще одного числа в диапазоне, даже если вы не будете вдаваться в подробности, чем они являются.
KRyan

7
Можно также упомянуть одно из упомянутых преимуществ в этом разделе комментариев: одно из основных преимуществ - вычитание (/ добавление отрицательных чисел) может быть реализовано, просто делая вид, что числа без знака и добавляя их. Никаких особых случаев не требуется для вычитания = гораздо проще схемы и логики. Эта страница имеет хорошую рецензию на эту тему.
Jason C

3

00110


Они дополняют работы по сложению или вычитанию с помощью переноса. Конечно, то, что отображается для программиста, не обязательно должно быть базовым представлением.
TTW

1
@ttw Вопрос спрашивает, что представляют собой два представления нуля, поэтому я не уверен, где в него входят сложение, вычитание и программисты.
Дэвид Ричерби

3

Говорить о двух разных значениях 0 в одном дополнении вводит в заблуждение. Одно дополнение (и два дополнения) являются двоичными представлениями чисел. Они описывают способ представления чисел в двоичном виде и как выполнять арифметические операции над ними. Число, представленное последовательностью битов, является значением.

000=00

00011

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.