Вычитание отрицательного дополнения 2

У меня есть два двоичных числа со знаком 2 и хочу вычесть их (в предположении 8-разрядного вычитателя)

1001 0110

1000 0001

какая будет операция по поиску разницы и почему /whynot есть переполнение

1 ответ

Решение

Чтобы получить разницу между двумя числами, нужно их вычесть:
1001 0110b = -106
1000 0001b = -127
так -106 - (-127) = 21

Вы также можете сделать это в двоичном виде:

 1001 0110b
-1000 0001b
     =
 0001 0101b

Другой метод: a-b = a+(-b)Таким образом, вы должны сделать 2-е дополнение второго числа. Так 1000 0001b становится 0111 1111b,

  1001 0110b
 +0111 1111b
      =
1 0001 0101b

первый 1 не считается, потому что это 8-битное число, поэтому результат также 0001 0101b что 21 в десятичном.

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