1 и 2 дополнения отрицательного числа

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

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

Одна глупая мысль: найти ли двоичное значение положительного значения, затем перевернуть биты, чтобы получить отрицательное число, а затем снова перевернуть, чтобы найти дополнение 1 к отрицательному числу??

1 ответ

Не имеет значения, если ваш стартовый номер является положительным или отрицательным - в системе дополнения до двух, -x такой же как ~x + 1, Если исходное число положительное, результат будет отрицательным, а если исходное число отрицательным, результат будет положительным. 8-битный пример - двоичный код означает двоичный код дополнения 2:

x (decimal) | -x (decimal) | x (binary) | -x (binary) | ~x (binary) | ~x+1 (binary)
------------+--------------+------------+-------------+-------------+---------------
     5      |      -5      |  0000 0101 |  1111 1011  |  1111 1010  |  1111 1011
    -5      |       5      |  1111 1011 |  0000 0101  |  0000 0100  |  0000 0101
   110      |    -110      |  0110 1110 |  1001 0010  |  1001 0001  |  1001 0010
   -38      |      38      |  1101 1010 |  0010 0110  |  0010 0101  |  0010 0110

Обратите внимание -x (binary) столбец и ~x+1 (binary) столбцы одинаковы.

Если вам нужно получить 1 число, это просто ~x,

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