-3 + -3 = -2 в двух дополнениях - PullRequest
0 голосов
/ 25 февраля 2019

с использованием 4-битных чисел, вычисляющих -3 + -3 в дополнение к двум, мои вычисления дают -2.

3 в двоичном виде - это 0011

, дополняющий оба знака путем перестановки всех цифр, поскольку оба являются отрицательными

1100 && 1100

, добавляя к ним однотак как мы используем дополнение до двух

1101 + 1101 =

11010

, первое переполнение и отбрасывается в дополнение к двум.Так что осталось с 1010, что является минус два в десятичной.Может кто-нибудь объяснить, что сделано неправильно в этом процессе?


РЕДАКТИРОВАТЬ

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

Результат равен 1010. В моем мире первый бит является знаковым битом, указывающим, что число является отрицательным.Следующие 0 означают, что есть 0 из -4, следующие 1 означают, что есть 1 из -2, следующие 0 означают, что есть 0 из -1

, поэтому я интерпретирую это как результат -2

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Результат верный, вы просто неправильно его интерпретировали.Когда вы выполняете арифметику с числами в дополнении к двум, результат также является дополнением к двум.Таким образом, преобразование из отрицательного в положительное выполняется так же, как преобразование исходных чисел из положительного в отрицательное.

Учитывая 4-разрядное двоичное значение 1010, сначала переверните биты, чтобы получить дополнение, чтобы получить0101, затем добавьте 1 к дополнению до двух, чтобы получить 0110.

0110 равно 6, поэтому 1010 равно -6.

0 голосов
/ 25 февраля 2019

первое переполнение

Если, как вы здесь подразумеваете, вы ограничиваете свое хранилище одним клоком, то с добавлением двух вы можете представлять значения в диапазоне -8 to 7.

-2 будет тогда 0b1110, а это не то, что у вас есть.-6 действительно 0b1010, что является правильной суммой.

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