Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИЯ TIN.doc
Скачиваний:
58
Добавлен:
05.05.2019
Размер:
657.41 Кб
Скачать

Дополнительный код.

Дополнительный код предполагает кодирование положительных чисел от 0 до 2n-1 без изменений, как и в прямом коде, а для отрицательных чисел используется специальная кодирование и получение дополнительного кода отрицательного числа, осуществляемое по правилу:

2n-|x|, где n – длина машинного кода

0

0000

+1

0001

+2

0010

+3

0011

+4

0100

+5

0101

+6

0110

+7

0111

+8

1000

-7

1001

-6

1010

-5

1011

-4

1100

-3

1101

-2

1110

-1

1111


Существует несколько правил получения дополнительного кода. Наиболее известное из этих правил:

-1997 (n=24=16)

-199710=-0000 0111 1100 11012

2n=_1 0000 0000 0000 0000

0000 0111 1100 1101

1111 1000 0011 0011

Для получения дополнительного кода числа необходимо записать n-битный модуль этого числа, затем все биты инвертируются и к полученному числу прибавляется двоичная единица. Т.е. дополнительный код является дополнением до основания системы счисления.

|x|+[x]д.к. =q

-1997 (n=24=16)

-0000 0111 1100 1101

+0000 0111 1100 1101

+1111 1000 0011 0010

0000 0000 0000 0001

1111 1000 0011 0011

Дополнительный код часто используют для хранения чисел, а также и для выполнения операций.

Сложение чисел в дополнительном коде.

Широкое применение дополнительного кода объясняется тем, что при сложении в доп. коде слагаемых получается дополнительный код суммы.

Хд.к.д.к.=(Х+У)д.к.

Знаковые биты суммируются обычным способом, а возникаемый перенос игнорируется.

Х=2500 У=-1200 (n=16)

250010=1001 1100 01002 -120010=-100 1011 0000

Д.к. 2500= 0000 1001 1100 0100

Д.к.-1200= 1111 1011 0101 0001

1 0000 0101 0001 0101

Любое число в дополнительном коде можно считать младшими битами с хвостом, числа длинны, если содержимое знакового разряда копировать влево. Операция называется расширением знака. Необходимость этой операции возникает, когда операнды имеют разные длинны.

Хд.к.=1011 0011

Х=-0100 11012= -7710 (при n=8)

Сделаем длину n=16, скопируем число влево и найдем эквивалент.

Хд.к.=1111 1111 1011 0011

Х=0000 0000 0100 10012=-7710

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]