Файл: Дроздов Е.А. Многопрограммные цифровые вычислительные машины.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.04.2024

Просмотров: 281

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

(2 .12) будут кодироваться положительными числами от 0 0 0 0 0 0 0 ’ до 111111Г. Коды отрицательных порядков будут иметь цифру 0 в старшем разряде 7-разрядного двоичного кода, положительных — цифру 1; нулевому порядку будет соответствовать код 1000000’. Во

избежание путаницы

смещенный порядок называют х а р а к т е ­

р и с т и к о й числа.

Так как все характеристики представляются

положительными числами, их сравнение выполняется очень просто: из характеристики первого слагаемого, например, всегда вычи­ тается характеристика второго слагаемого.

Сучетом вышеизложенного число, например, —32756 в форме

сплавающей запятой в виде 32-разрядного двоичного кода может быть представлено, как показано на рис. 2.2. Мантисса изображе-

днак

числа

I

I I I I I I Г*т | I | I | I I Г"1 I Г-| I г-----

1 1 0 0 0 1 0 1 0 1 1 1 11 11 11 1 1 0 1 0 0 • • • 0

I i i i i i i i i i

I I 1

i i i I i i i 11. i l

31

0 1 2 3 4 5 6 7 8

11 12

1516

1920

2324

Характеристика

 

Мантисса

 

 

Рис. 2.2. Пример машинного кода числа

в форме с плаваю,

 

щей запятой

 

 

 

на нормализованной в шестнадцатеричной системе счисления, ха­ рактеристика р* = 5+ 26. Весь код на рис. 2.2 в шестнадцатеричной системе счисления можно записать как С5 7FF400.

Рассмотренное выше представление двоичных чисел со знаками называется п р я м ы м м а ш и н н ы м к о д о м или просто п р я ­ м ы м кодом. В этом коде значащая часть в виде абсолютного значения двоичного числа и код знака (плюса или минуса) поме­ щаются в соответствующие позиции разрядной сетки. Формула для

образования

прямого кода [Л]цр

правильной двоичной

дроби

Л = ± 0 ,

имеет вид

 

 

I

А,

если А ^ 0,

(2.13)

 

И ]пр = )1 _

д

если A < Q

Например:

А= +0,101011 [Л]пр = 0’.10Ю11;

Л= -0,011011 -> [Л]пр= 1 — (—0,011011) = Г.ОПОИ.

Прямой код [Лц]пр целого числа Al1 = ат_^ат_2. . .а ха0 полу­

чается по формуле

 

 

| я (0) -ф Лц,

если Лц

0,

1 10я-1 - Л ц,

если Лц<

(2.14)

0,

где 10 — два; я — количество позиций в разрядной сетке;

42


« {0} — «-разрядный код нуля;

 

Лц< 1 0 л-1- 1 , т. е. / « < « - 1.

 

Например: в разрядной сетке с « = 5

 

Л“ =

+101 [Лц]пр =

00000 +

101 = 0.0101’;

Лц =

—110-^- [Лц]пр=

104 — (— 110) = 1.0110’.

Из (2ЛЗ) и (2.14)

следует, что в обоих случаях + 0 и —0 в прямом

коде изображаются как

 

 

Л =

+ 0 ,0 0 0 ... 0

[Л]пр =

О’.ООО... 0,

Л =

- 0 ,0 0 0 ... 0

[Л]пр =

l’.OOO... 0

и

 

 

 

 

л ц =

+ 0 0 0 0 ... О

[Лц]пр =

0.000... О’,

л ц =

- 0 0 0 0 ... О

[лц]пр =

1.0 0 0 ... О’.

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

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

Формулы для образования дополнительного и обратного кодов отрицательных двоичных чисел |Л |< 1 имеют вид

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

Обратный код

[Л]доп = 10 +

Л,

[Л ]обр = Ю -10 -г + Д (2.15)

где Л = — 0, а - ^ - г й - з ...

а_/,

 

10 — два.

 

 

Например: А = —0,1011, тогда

И ]доп = Ю + (-0,1011) = Г.0101; [Л]о6р = 10 - 0,0001 +

+ (-0,1011) = 1’.0Ю0.

Для целых двоичных чисел, представляемых в «-разрядной сет­ ке, дополнения берутся соответственно до 10п или 10"—1. Поэтому для целых чисел

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

Обратный код

 

[Дц]доп=10', + Дц>

[Лц]обр= 1 0 п- 1 + Л ц,

(2.16)

где 10 — два.

43


Например: Лц=1011, п — 6, тогда

И д о п =

1000000 + ( - 1 0 1 1 ) = 1.10101'

и

 

и ц]обр =

п и п + ( - 1 0 1 1 ) = 1.1оюо’.

Таким образом, правила образования дополнительного и обрат­ ного кодов состоят в следующем:

— для образования дополнительного кода отрицательного двоичного числа необходимо в знаковом разряде поставить

единицу *, во всех цифровых

разрядах единицы заменить нуля­

ми, а нули — единицами, и к

младшему разряду прибавить еди­

ницу;

 

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

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

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

нахождения дополнительного и обратного кодов.

>

Замена вычитания двоичных чисел А\—Аг (или

в прямых ко­

дах Hi]np—ИгЬр) сложением с дополнениями

[Лi]np + [—Л2]доп

или [Лi]np+(—Лг]обр позволяет оперировать со знаковыми разряда­ ми так же, как и с цифровыми. При этом знаковые разряды скла­ дываются так же, как и значащие разряды числа, а перенос из старшего значащего разряда обычным порядком подсуммируется к значению суммы знаковых разрядов. Однако правила учета пе­ реносов (если они возникают) из знакового разряда суммы и, сле­ довательно, получение правильного результата для дополнитель­ ного и обратного кодов различны:

при использовании дополнительного кода единица переноса из знакового разряда не учитывается;

при использовании обратного кода единица переноса из зна­

кового разряда прибавляется к младшему разряду суммы (осуще­ ствляется так называемый циклический перенос).

* При переводе из прямого машинного кода эта единица в знаковом разря­ де уже имеется и она сохраняется.

44


Пример 2.4. Сложить с использованием дополнительного и обратного кодов числа At = +0,1011 и Л2 = —0,0101.

Hi]nP=

ОМОН

Milnp =

ОМОН

И 2]доп =

1 М0 1 1

И 2]обр =

1М010

Мх]пр + Иг]доп =

ж О’.ОПО =

\Ajr-Л2]пр. Циклический

O’.OIOI

 

Т

перенос

— > +1

 

 

 

Единица переноса

1]пр Н~ [^2]обр — О’.ОПО — [j4j—^ г]пр"

из знакового разряда

 

 

не учитывается

 

 

Так как Л i> Л2, то результат в прямом коде

[Л] — Ла]пр = О’.ОНО, откуда At — ,42 =+0,0110.

Пример 2.5. Сложить с использованием дополнительного и обратного кодов

числа Л1= + 0 , 0 1 1 1 и Л2 = 0 ,1 0 1 1 .

И .]пр=

0 ’.0 1 1 1

И ,]пр=

 

1доп =

Г-0 101

[Л2]обр =

+

0 ’ .0 1 1 1

1 ’.0 1 0 0

[■^1]пр+[-^2]доп= 1M100= [j4i — >12]доп- Hi]np+[-^2]o6p= l ’-lOl 1 = [j4t—Л2]06р.

Так как Ai<A2, то результат получился соответственно в дополнительном и

обратном кодах. Пользуясь правилами преобразования в прямой код, находим И ,-Л 2]„р=Г.0Ю0 и Л,—Л2= —0,0100.

Выполняя операции над числами |Л |< 1 с использованием об­ ратного кода необходимо помнить, что слагаемые должны иметь одинаковое количество цифровых разрядов. Если это требование не выполняется, то результат сложения с применением обратных кодо% оказывается искаженным. В связи с этим до перевода сла­ гаемых в обратные коды необходимо выравнять количества цифро­ вых разрядов их прямых кодов. Выравнивание производится при­ писыванием справа соответствующего количества нулей к прямому коду слагаемого, имеющего меньшее количество разрядов. В маши­ нах это условие выполняется автоматически.

При использовании обратного кода следует иметь также в виду, что в этом случае при алгебраическом сложении всегда возникает отрицательный нуль Г.111...1, соответствующий —0,000... 0. То же самое имеет, место и при действиях с целыми числами. Это об­ стоятельство необходимо учитывать, например, при сравнении с положительным нулем, не являющимся результатом арифметиче­ ских операций.

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

45


Пример 2.6. Сложить с использованием дополнительного и обратного кодов

+1011011 и ^ 2 = —111 1.

К] пр= 0.101101Г

+К ] доп = + Ы110001’

К ] пр + К Ц]доп= Ж0.1001100’ = [Л“-Л 2ц] пр.

К ] „ р =

0 .1 0 1 1 0 1 Г

К ц]обр= + 1 .1 1 1 0 0 0 0 -

—0.1001011-

I-------

>+ 1

И"]пр + И ]о б Р =

0 .1 0 0 1 1 0 0 - = [Л«—Л^]пр;

Л“ — Л" =

+1001100.

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

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

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

Выход результата операции за допустимые пределы представ­ ления чисел приведет к ошибкам в последующих вычислениях, если не принять надлежащие меры. Поэтому случаи переполнения дол­ жны немедленно обнаруживаться. Для этого в машинах приме­ няют так называемые м о д и ф и ц и р о в а н н ы е прямой, допол­ нительный и обратный коды, которые отличаются от рассмотрен­ ных. выше простых кодов тем, что знаки чисел изображаются не одним разрядом, а двумя. Например, для Л==—0,1011 модифици­ рованные коды будут иметь вид [Л]“р= 11.’1011; [Д]д0П= ll.’OlOl

[Л]«р = 1Г.0100, а для А = +0,0110 — [Л]“р = 00’.0110.

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

Признаком переполнения разрядной сетки в модифицирован­ ных кодах служит либо появление в знаковом разряде суммы со-

46