Бинарное сложение. Это переполнение? - PullRequest
3 голосов
/ 28 апреля 2010

Двоичные значения в форме дополнения 2 с.

Если мне нужно добавить 110001 (-15) и 101110 (-18), и ответ должен быть сохранен в 6-битном целом числе, это переполнение / переполнение.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2010

Это переполнение, ваш профессор прав.Вы храните больше битов, которые могут храниться в выделенном пространстве (даже если число, которое представляют биты, является отрицательным.)

Недостаток - это когда биты обнуляются из-за сдвига по большой математике.Очень часто встречается в математике с фиксированной точкой.Разделите очень маленькое число на очень большое число, и вы довольно часто получите 0. Это недостаточное значение.

1 голос
/ 23 сентября 2011

Был рассмотрен хороший пример добавления двух регистров с содержимым -70 и -90 и сохранения его в третьем регистре.

Let's assume R1[8 bits] = -70 R2[8 bits] = -90 Result[9 bits] = -160, an extra bit for overflow.

Этот пример обсуждается на странице overflow_signed_detection по ссылке 1 ниже. С помощью правил, обсуждаемых на этой странице, пример можно масштабировать до любых двух десятичных чисел со знаком.

0 голосов
/ 23 мая 2010

РЕДАКТИРОВАТЬ: Я только что понял, что -33 слишком велика для 6 бит, поэтому результат НЕ -33, но +31, и, следовательно, это определенно переполнение :)

Добавление двух чисел и получение правильного результата, если определенно НЕ переполнение. Пример переполнения - добавление двух отрицательных чисел и получение в результате положительного числа (или наоборот).

Например, если вы добавите два положительных числа 0x7fffffff и 0x00000001, вы получите отрицательное число 0x80000000, что определенно неверно и, следовательно, является переполнением.

Может, вы путаете переполнение с переносом?

...