Комплимент двоих - метод анализа - PullRequest
0 голосов
/ 15 января 2019

У меня есть вопрос о методе комплимента двух: Какой из этих двух методов является правильным, и как я могу опровергнуть неправильный?

Исходный пример задачи: преобразовать отрицательное число -20 в двоичное отрицательное двоичное число комплимента (которое содержится в 8-разрядном двоичном формате).

Метод 1:

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

Пример: для -20 .. 20 в двоичном виде - 00010100, эти перевернутые биты - 11101011, затем добавьте 1 к перевернутым битам, чтобы получить 11101100. Так, 11101100 - это -20 в дополнении к двум.

Метод 2:

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

Пример: для -20 .. 20 - положительное число, поэтому 20-1 = 19. 19 в двоичном виде - 00010011. Отразить биты: 11101100. 11101100 равен -20 в дополнении до двух.

1 Ответ

0 голосов
/ 15 января 2019

Оба метода действительны.

Учитывая число n битов A = an-1, an-2 ... a0, C2 - это число такое, что A + C2 (A) = 2 ^ n

Если / A является битовым дополнением к A, легко доказать, что A + / A = 11..11 = 2 ^ n-1 => C2 = / A + 1, что доказывает первый метод.

Второй метод утверждает, что C2 (A) = / (A-1). Если мы вычислим / (A-1) + (A-1) = 11 ... 11 = 2 ^ n-1, мы можем видеть, что / (A-1) + A = 2 ^ n, что доказывает второй метод.

...