-3 + -3 = -2 в двух дополнениях

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

3 в двоичном коде - 0011

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

1100 && 1100

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

1101 + 1101 =

11010

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


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

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

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

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

2 ответа

Решение

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

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

0110 6, так 1010 это -6.

первый переполнен

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

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

Другие вопросы по тегам