Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
01._Predstavlenie_celykh_chisel_v_kompjutere.doc
Скачиваний:
19
Добавлен:
01.03.2025
Размер:
97.28 Кб
Скачать

Перенос и переполнение

Как видно из проведённых выше примеров, в некоторых случаях операции над числами в дополнительном коде дают ошибочный результат. Эти случаи называются "переполнением". Название случая отражает то, что требуемый результат не может быть размещён в  используемой разрядной сетке, или не входит в множество чисел со знаком данной разрядности.

При сложении чисел в дополнительном коде почти в половине случаев возникает перенос за разрядную сетку, причём результат сложения оказывается правильным . Переносом за разрядную сетку называют случай, при котором результат сложения не помещается в разрядную сетку слова (в примере -- двухразрядную). Эти случаи при операциях с числами в дополнительном коде, вообще говоря, не приводят к ошибочному результату. Более того, на игнорировании переноса за разрядную сетку основаны замечательные свойства дополнительного кода.

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

Получено

Перенос в знаковый разряд

Перенос за пределы разрядной сетки

Переполнение

"ноль"+"ноль"="ноль"

00+00=00

-

-

-

"ноль"+"один"="один"

00+01=01

-

-

-

"ноль"+"минус один"="минус один"

00+11=11

-

-

"ноль"+"минус два"="минус два"

00+10=10

-

-

-

"один"+"один"="два"

01+01=1

+

-

!

"один"+"минус один"="ноль"

01+11=100

+

+

-

"один"+"минус два"="минус один"

01+10=11

-

-

-

"минус один"+"минус один"="минус два"

11+11=110

+

+

-

"минус один"+"минус два"="минус три"

11+10=101

-

+

!

"минус два"+"минус два"="минус четыре"

10+10=100

-

+

!

Обозначая С -- логическое значение высказывания "Произошёл перенос за разрядную сетку", а

С3 -- логическое значение высказывания "Произошёл перенос в знаковый разряд"

, можно выразить логическое значение Ov высказывания "Произошло переполнение" следующей формулой:

Ov=(C&С3)|С&С3)=C][С3

где обозначено: & -- операция "И", | -- операция "ИЛИ", ][ -- операция "Исключающее ИЛИ", черта сверху -- операция "НЕ".