Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций для студентов направления 230100 ту...doc
Скачиваний:
0
Добавлен:
25.12.2019
Размер:
7.52 Mб
Скачать

5.Модуляция и кодирование

5.1. Коды: прямой, обратный, дополнительный, модифицированный

Одним из способов выполнения операции вычитания является замена знака вычитаемого на противоположный и прибавление его к уменьшаемому:

A – B = A + (–B).

Этим операцию арифметического вычитания заменяют операцией алгебраического сложения. Последняя и становится основной операцией.

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

Прямой код обычно используется при хранении чисел в запоминающем устройстве, а обратный и дополнительный коды — при выполнении над числами арифметических и некоторых других операций. При пересылках из запоминающего устройства в арифметическое и обратно числа перекодируются. Все три кода состоят из кода знака (число отведённых разрядов l), кода целой части (m) и кода дробной части (n) числа. Сумма d =l+т+n называется длиной кода. Как правило l, т и n фиксированы. В случае целых чисел n=0, для правильных дробей обычно т=0, когда все числа одного знака, l=0.

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

5.1.1Прямой код числа

При кодировании прямым n-разрядным двоичным кодом один разряд (как правило, самый старший) отводится для знака числа. Остальные n-1 разрядов - для значащих цифр. Значение знакового разряда равно 0 для положительных чисел, 1 - для отрицательных.

Пример: 1 = 0000 0001, -1 = 1000 0001.

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

[А]пр = |A|, при А>0 ;

[А]пр = (1,0)2 + |A|, при А<0.

Для прямого кода справедливо следующее соотношение:

где n-разрядность кода, а(зн) - значение знакового разряда. Например: если разрядность кода равна 4, то

1101 = (-1)1[1*20+0*21+1*22] = -5

5.1.2Обратный код числа

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

Например, обратные коды чисел А1 = 0,11010 и А2 = -0,11010 будут иметь вид [А1]обр = 011010; [А2]обр = 100101.

Обратный код двоичного числа является дополнением модуля числа до наибольшего числа без знака, умещающегося в разрядную сетку, т.е. до величины 1,111…1 или до (10)2 – 1*2-m, где 1*2-m - единица младшего разряда.

Примеры: +12(10 с.с.)=1100(2 с.с.)=0_1100(пр)=0_1100(обр) -15.25(10 с.с.)=-1111.01(2 с.с.)=1_1111.01(пр)=1_0000.10(обр)

5.1.3Дополнительный код числа

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

Идея на примере десятичного вычитания двухразрядных чисел: предположим, что надо выполнить вычитание 84-32 /результат 52/. Дополним 32 до 100 /это «дополнение» равно 68/. Затем выполним сложение 84+68 /результат 152/. Единица «уходит», потому что рассматривает двухразрядные десятичные числа.

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

Дополнительный код отрицательного числа отличается от обратного кода тем, что после замены цифр производится сложение результата с d-paзрядным числом, все разряды которого, кроме младшего, содержат нули, причём перенос из старшего разряда при сложении не выполняется. Например, число в двоичной системе счисления равно +11,01. Пусть задано l=1, т=3, n=4; дополняя целую и дробную части нулями, запишем число в виде +011,0100. Прямой обратный и дополнительный коды заданного числа одинаковы — 0 011 0100. Для отрицательного числа —11,01 прямой код имеет вид 1011 0100, обратный код — 1100 1011 и дополнительный — 1100 1100.