2s Дополнение отрицательного нуля

У меня проблема: вы знаете 2s Complement, так что вы можете получить отрицательное число положительного с обратным и добавив один. например

8 Bit
121 = 0111 1001
 1st= 1000 0110
  +   0000 0001
      ---------
      1000 0111 --> -121 

Так что теперь, если у нас есть -0

ноль выглядит как 8 бит

0000 0000

поэтому минус 0 должен выглядеть

 1111 1111 + 0000 0001
= 10000 0000

но это 512

так что я думаю, что я что-то неправильно понял

2 ответа

Решение

1 0000 0000b 256, а не 512. Сокращено до 8 бит, это 0.

Это потому, что с дополнением до двух ноль равен нулю. Нет положительного или отрицательного нуля.

Сравните это со своим дополнением или знаковым битом, где положительный ноль и отрицательный ноль - это разные значения.

Чтобы расширить мой предыдущий комментарий к вопросу

1111 1111 + 0000 0001 в 8 битах есть 0000 0000девятый бит теряется, потому что от него нет места.

И, да, дополнение отрицательное является положительным

-121 = 1000 0111
 1st = 0111 1000
   +   0000 0001
       ---------
       0111 1001 --> 121 

Думайте о них как о круге, в одной точке есть 0, добавляя 1 за раз, когда вы поднимаетесь к противоположной точке (128 в 8 битах), в этот момент знак переключается, и абсолютное значение начинает уменьшаться, например: 128 + 1 = -127, поскольку вы продолжаете добавлять 1, значение возвращается к 0, и круг завершается.

Поэтому, учитывая количество бит, у вас есть только этот бит, не более, и если вы хотите, чтобы значение было подписано, у вас действительно есть только бит x-1 для значения, так как самый старший бит используется для знака (0 -> +; 1 -> -)

Другие вопросы по тегам