Вычитание отрицательного дополнения 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 в десятичном.