Дополнение дополнения Two, приводящее к отрицательному - PullRequest
0 голосов
/ 17 сентября 2018

Я понимаю концепцию использования дополнения до двух для представления отрицательного значения, которое затем может быть использовано дополнительно для нахождения результирующего значения.

ех. x = 15 и y = 10, в двоичном виде x = 1111 и y = 1010 для вычисления x - y мы представляем y как отрицательный результат с использованием дополнения до двух, в результате чего y = 0101 + 0001 = 0110 затем выполняется сложение x + (-y) = 1111 + 0110 = 0101, что приводит к ожидаемому результату 5.

Все хорошо, пока я не попытаюсь использовать тот же метод для вычисления y - x, что в итоге приведет к переводу 1011 в 11, а не к ожидаемому результату -5. Есть ли способ правильно рассчитать сложение двух двоичных чисел, приводящее к отрицательному значению?

1 Ответ

0 голосов
/ 17 сентября 2018

Думайте об этом так;y - x эквивалентно -x + y.По этой причине мы можем сначала отрицать x, то есть 15 (1111 в двоичном виде), которое становится 0001 после отрицания.Затем мы можем добавить это значение к y (то есть 10, 1010 в двоичном виде), что приведет к 1011.Поскольку это значение является отрицательным, мы затем переворачиваем биты и добавляем 1, чтобы сделать его положительным, и получаем 0101, что составляет 5 в base-10.Это означает, что наш результат был -5, что является правильным.

Я думаю, что вы были правы везде, кроме случаев, когда вы заявили, что он переводится как 11.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...