Забираем положительное число из отрицательного - дополнение к двум

Используя форму дополнения до двух, мне нужно с 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
Другие вопросы по тегам