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
,