Забираем положительное число из отрицательного - дополнение к двум
Используя форму дополнения до двух, мне нужно с 8 битами выполнить следующее:
- Вычтите 45 из -20.
Другой способ, которым вы могли бы спросить об этом, это сказать "убери 45 от -20 или" -20 - 45 "", иначе снова будет "-20 + -45".
Я думаю, что я должен получить двойное дополнение -20 (11101100) и затем добавить его к двойному дополнению -45 (11010011) или наоборот. Это дало бы мне:
1110 1100
1101 0011
= 1111 1111
Это явно не правильно. Что я делаю неправильно?
1 ответ
Ваша ошибка со вторым MSB - вы добавили 1+1 к 1, где на самом деле + - это в основном операция XOR, поэтому 1+1 должен был быть 0, а затем вы несете 1.
-20 + -45
это правильный способ рассчитать это и должно быть:
1
1110 1100
1101 0011
---------
= 1011 1111
В основном, для MSB вы получили 1+1+1
что эквивалентно 0+1
(или же 1+0
), что, конечно, 1
,
И таким образом вы получили 10111111
который -65
в десятичном виде:
-2^7 + 2^5 +2 ^4 + 2^3 + 2^2 + 2^1 + 2^0
= -128 + 32 + 16 + 8 + 4 + 2 + 1
= -65