xy = x + ¬y + 1 задача - PullRequest
       48

xy = x + ¬y + 1 задача

10 голосов
/ 11 августа 2010

В настоящее время я читаю книгу о "битой игре", и появляется следующая формула:

x-y = x+¬y+1

Но, похоже, это не работает.Пример:

x = 0100  
y = 0010  
x-y = 0010  
¬y = 1101  
¬y+1 = 1110  
x+1110 = 10010  

Но 10010 != 0010...

Где я допустил ошибку (если есть)?

(Книга " Восторг Хакера * 1013"* "Генри С. Уорреном.)

Ответы [ 5 ]

23 голосов
/ 11 августа 2010

У вас есть только четырехбитная система!Та дополнительная 1 слева от вашего окончательного результата не может существовать.Это должно быть:

x  = 0100
y  = 0010
~y = 1101
~y + 1 = 1110
x + 1110 = 0010

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

2 голосов
/ 11 августа 2010

Если предположить, что числа ограничены 4 битами, то пятый 1 будет обрезан, и вы получите 0010.

2 голосов
/ 11 августа 2010

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

1 голос
/ 11 августа 2010

Просто чтобы добавить к ответам, в системе дополнения 2:

~x + 1 = -x

Скажите x = 2.В 4 битах это 0010.

~x = 1101
~x + 1 = 1110

А 1110 равно -2

1 голос
/ 11 августа 2010

Это все о переполнении. У вас есть только четыре бита, так что это не 10010, а 0010.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...