xy = 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 ...

Где я сделал ошибку (если таковая была)?

(Книга называется « Hacker's Delight » Генри С. Уоррен.)

10
задан Peter Mortensen 30 August 2010 в 22:57
поделиться

5 ответов

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

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

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

23
ответ дан 3 December 2019 в 15:21
поделиться

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

2
ответ дан 3 December 2019 в 15:21
поделиться

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

2
ответ дан 3 December 2019 в 15:21
поделиться

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

1
ответ дан 3 December 2019 в 15:21
поделиться

Чтобы добавить к ответам, в системе с дополнением до 2:

~x + 1 = -x

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

~x = 1101
~x + 1 = 1110

И 1110 равно -2

1
ответ дан 3 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: