X-y = x + ¬y + 1 проблема
В настоящее время я читаю книгу о "бит-фридзинге" и появляется следующая формула:
x-y = x+¬y+1
Но это, похоже, не работает. Пример:
x = 0100
y = 0010
x-y = 0010
¬y = 1101
¬y+1 = 1110
x+1110 = 10010
Но 10010 != 0010...
Где я совершил ошибку (если есть)?
(Книга "" Хакерский восторг" Генри С. Уоррена.)
Ответы
Ответ 1
У вас есть только четырехбитная система! Это лишнее 1 слева от вашего окончательного результата не может существовать. Это должно быть:
x = 0100
y = 0010
~y = 1101
~y + 1 = 1110
x + 1110 = 0010
Другой бит переполняется и не является частью вашего результата. Вы можете прочитать две арифметики дополнения.
Ответ 2
У вас есть дополнительный бит. В реальных компьютерах, если вы переполняете слово, бит исчезает. (на самом деле он сохраняется в флагом переноса.).
Ответ 3
Предполагая, что числа ограничены 4 битами, пятый 1
будет усечен, оставив вас с 0010
.
Ответ 4
Это все о переполнении. У вас всего четыре бита, поэтому он не 10010, а 0010.
Ответ 5
Просто добавьте ответы в систему с двумя дополнениями:
~x + 1 = -x
Скажите x = 2
. В 4 битах это 0010
.
~x = 1101
~x + 1 = 1110
И 1110
равно -2