Почему вычитание 1 и выполнение побитового обращения эквивалентно выполнению побитового обращения и сложению 1? - PullRequest
0 голосов
/ 16 июня 2019

Я изучаю дополнение к двум и нашел 2 метода преобразования представления дополнения к числу два в его десятичное представление:

  1. Вычтите 1 из исходного двоичного числа, затем выполните побитовое обратное. Преобразуйте это новое двоичное число в десятичное число и соответственно измените знак.

  2. Сделайте побитовое инвертирование начального двоичного числа, затем добавьте 1. Преобразуйте это новое двоичное число в десятичное число и соответственно измените знак.

Почему вычитание 1 и выполнение побитового обращения эквивалентно выполнению побитового обращения и сложению 1?

1 Ответ

0 голосов
/ 17 июня 2019

TL; DR
если & minus a == ~ a + 1, то ~ a == & minus; a & minus 1 и ~ ( a & minus ; 1) == & минус; ( а & минус; 1) -1 == & минус; а

Два дополняют произведения, кодируя отрицательное число a <0 по 2 ^ <em>n & minus; | a | = 2 ^ n + а . Таким образом, a + (& minus; a ) = 2 ^ n и, если игнорировать биты выше n & minus; 1, код & minus; a имеет те же математические свойства для сложения, что и & minus; a .

.

Таким образом, задача найти два дополнения b из a состоит в том, чтобы найти число b , такое как a + B = 2 ^ п * * тысяча пятьдесят-один. * * тысяча пятьдесят две Мы можем видеть, что двоичное дополнение a , ~ a почти обладает этим свойством.

    a    an-1  an-2    ...  a1    a0
 + ~a   ~an-1 ~an-2    ... ~a1   ~a0
   ---------------------------------
 =          1     1    ...   1     1

Либо a i = 0 и ~ a i = 1 или a i = 1 и ~ a i = 0 и а + ~ а = 111..11 = 2 ^ * 1 074 * п * * & тысяча семьдесят пять минус; 1
Добавляя один, мы можем видеть, что a + ~ a + 1 = 2 ^ n и что дополнение к двум a равно ~ а + 1.

Как ~ a + 1 = 2 ^ n & minus; a
~ а = 2 ^ N & минус; а * * -1 1 101
Если мы заменим a на ( a & minus; 1), мы получим
~ ( а & минус; 1) = 2 ^ п & минус; ( а & минус; 1) & минус; 1
= 2 ^ n & minus; a
= ~ a + 1

То есть ~ a + 1 и ~ ( a -1) идентичны.

...