8-битное сложение числа без знака и переполнение вычитания - PullRequest
0 голосов
/ 23 сентября 2018

У меня проблемы с пониманием, когда происходит переполнение при неизменном сложении и вычитании.Например,

   1 1 1 1 0 0 0 0 
+  0 0 1 1 1 0 0 0 
  __________________
   0 0 1 0 1 0 0 0 

Из-за 1 в MSB это приводит к переполнению.Я понимаю эту проблему, но когда дело доходит до вычитания, мне трудно определить, когда оно переполнено

Например,

   0 0 0 0 0 0 0 1               
-  0 0 0 0 0 0 1 1   

(после применения дополнения 2)

   0 0 0 0 0 0 0 1 
+  1 1 1 1 1 1 0 1

   1 1 1 1 1 1 1 0 

Следовательно, результатом должно быть «без переполнения», потому что в конце нет выполнения 1.Тем не менее, ответ говорит «переполнение».Не могли бы вы сказать мне, почему?

1 Ответ

0 голосов
/ 23 сентября 2018

Я бы назвал это недолетом не переполнением .

Думайте об этом так.Вы пытаетесь вычислить x - y .Используя два дополнения, вы реализуете это как x + (2 N - y ) = 2 N + ( x - y ).Таким образом, результат будет правильно отображаться ( x - y ), если имеется бит переноса переполнения 2 N , который упал слева,В противном случае вы получите результат, представляющий собой дополнение к отрицательному результату вычитания в две секунды.

...