Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БЕКИН_Д_ЖЕНАТОВ.doc
Скачиваний:
35
Добавлен:
24.08.2019
Размер:
4.5 Mб
Скачать

4.5. Прямой код

Прямой код двоичного числа , представляемого в n-разрядной сетке, определяется как:

, при  0;

= , при  0,

где – величина, равная весу старшего разряда сетки (для дробей = 1, а для целых = 2 в степени ). Диапазон представляемых кодом чисел 0  | | < .

Из определения следует, что положительные числа представляются кодами (числами без знака) 0  < , а отрицательные  < 2 . Признаком представления положительных чисел является наличие нуля в старшем разряде, называемом знаковым. Наличие в этом разряде 1 говорит о том, что число отрицательное. Цифровые разряды прямого кода содержат модуль представляемого числа, что обеспечивает наглядность представления чисел в прямом коде.

Рассмотрим однобайтовое представление двоичного числа (наиболее часто встречается в микропроцессорах). Пусть это будет 28(10). В двоичном формате – 0011100(2) (при однобайтовом формате под величину числа отведено 7 разрядов). Двоичное число со знаком будет выглядеть так, как показано на рисунке 4.1.

Рис. 4.1. Формат двоичного числа со знаком в прямом коде

а – положительное число; б – отрицательное

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

Операция вычитания (алгебраического сложения) сводится к операции простого арифметического сложения при помощи обратного и дополнительного кодов.

4.6. Обратный код

Обратный код двоичного числа G, представляемого в n-разрядной сетке, определяется как

, при  0;

= , при  0,

где – величина наибольшего числа без знака, размещающегося в n-разрядной сетке (для дробей = 2 – 2- (n-1), а для целых = 2 n -1). Диапазон представляемых обратным кодом чисел такой же, как и у прямого кода: 0    < .

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

В связи с этим получение обратного кода двоичного отрицательного числа сводится к получению инверсии n-разрядного кода модуля этого числа. Так как модуль чисел, представимых в n-разрядной сетке, G< A, в старшем (знаковом) разряде обратного кода у положительных чисел будет 0, а у отрицательных 1.

Рис. 4.2. Формат двоичного числа со знаком в обратном коде

а – положительное число; б – отрицательное

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

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

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

(+ 0)пр = 00000.....00;

(+ 0)обр = 00000.....00.

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

(– 0)пр = 100000...00;

(– 0)обр = 111111...11.

Кроме того, в операциях сложения и вычитания требуется дополни­тельная операция по прибавлению бита переноса в младший разряд суммы. Рассмотрим правила алгебраического сложения в ОК (поскольку А – В = А + (– В)). Алгоритм сложения в ОК включает в себя:

– сложение кодов, включая знаковый разряд;

– прибавление переноса к МЗР (младшему значащему разряду) суммы.

Пример 4.5. Сложить два числа +5 и -8, используя обратный код.

+5(10) = +101(2) =0_101(пр)=0_010(обр)

–8(10) = –1000(2) = 1_1000(пр)=1_0111(обр)

Данные числа в 24-разрядной сетке ЭВМ в прямом коде имеют следующий вид:

000000111010000000000000

100001001000000000000000

В соответствии с указанным выше мантисса первого числа сдвигается вправо на 1 разряд, т.к. порядок числа равен 3, а порядок второго числа равен 4.

Сложение мантиссы на сумматоре:

0 0101000000000000 – обр. код первого числа

+