Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Знак числа в дополнительном коде




 

В дополнительном коде числа, строго говоря, отсутствует отдельный разряд знака. То, что все отрицательные числа, представленные в дополнительном коде, имеют единицу в старшем разряде, а положительные числа -- имеют в старшем разряде ноль, является только свойством дополнительного кода. Не должно вводить в заблуждение и употребляемое определение старшего разряда как "знакового". На самом деле, знак и "абсолютная величина" в дополнительном коде связаны воедино и неразделимы.

Это понимание особенно важно при преобразовании числа со знаком, представленного, например, в одном байте (ShortInt) в двухбайтовый формат (Integer):

Исходное число ShortInt, равное минус 38, представленное в одном байте:

               

Правильно преобразованное в двухбайтовый формат представление того же самого числа "минус 38" в двухбайтовом формате (Integer):

старший байт младший байт
                               
                               

То есть, правильным действием при увеличении разрядности слова, в которое записывается число в дополнительном коде является "распространение знака" на добавившиеся разряды.

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

 

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

 

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

 

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

 

  Получено Перенос в знаковый разряд Перенос за пределы разрядной сетки Переполнение
"ноль"+"ноль"="ноль" 00+00=00 - - -
"ноль"+"один"="один" 00+01=01 - - -
"ноль"+"минус один"="минус один" 00+11=11 - - -
"ноль"+"минус два"="минус два" 00+10=10 - - -
"один"+"один"="два" 01+01= 1 0 + - !
"один"+"минус один"="ноль" 01+11=1 0 0 + + -
"один"+"минус два"="минус один" 01+10=11 - - -
"минус один"+"минус один"="минус два" 11+11=1 1 0 + + -
"минус один"+"минус два"="минус три" 11+10=101 - + !
"минус два"+"минус два"="минус четыре" 10+10=100 - + !

 

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

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

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

 

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

 

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

 





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 278 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если президенты не могут делать этого со своими женами, они делают это со своими странами © Иосиф Бродский
==> читать все изречения...

2464 - | 2329 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.