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

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

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

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


person Haakon Sjøgren    schedule 01.09.2013    source источник
comment
Сначала вам нужно указать, как представлено отрицательное число.   -  person starblue    schedule 02.09.2013


Ответы (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.

person Carl Norum    schedule 01.09.2013
comment
действительно, если бы это было не так, было бы непрактично моделировать номера в этих форматах, как вы хотите x == -(-x) - person jk.; 02.09.2013