Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы информатики_Савельев А.Я_Учебник_2001

.pdf
Скачиваний:
387
Добавлен:
16.01.2016
Размер:
4.68 Mб
Скачать

7 / Предспшоление десятичныл чисел в Д-коба*^

Для однозначности перевода чисел в Д-код и обратно желательно, что­ бы разряды геград имели определенный вес. Тогда значение десЯ1ичной

цифры а, coornciCiпуст выражению

 

 

 

с/, - aja.j

4 н,,ст_-1 ! i.Xjfj2

+ а | а | ,

 

(7-3)

[ дс о,

— вес разряда тетрады.

 

 

 

 

 

 

 

В

Ta6juiiic7.l представлено кодирование десятичных цифр

в различ­

ных Д-кода\.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 а сл о м а 7.1

 

 

 

 

Э к в и в а л с т ы

в кодах

 

 

Д с с я т и ' т ы с

Л,

Д :

Д;

 

Д .

 

д.

д<,

д,

 

 

(1ЛК-Н-МП

( f i i c i c M a

(cHcieMa

( с н о е м а

(сиии'ма

( с т л с м а

(ciicieMa

 

 

8421)

2'1Л)

SI21)

«421 М)

53-21)

75-31)

-Vt21)

 

(1

«1100

0000

0000

ООП

 

0000

0000

0000

 

1

11001

0001

0001

 

0100

 

0001

0001

0001

 

2

0010

0010

00 10

0101

 

от

оно

0010

 

3

001 1

001 1

ООП

 

ОНО

 

1010

0111

001 1

 

-1

0100

0100

от

 

0111

 

0101

1010

0100

 

1,^

0101

1011

1000

1000

 

1000

0100

1000

 

оно

1100

1001

1001

 

1001

0101

1001

 

1'«

0111

1101

1010

1010

 

1111

1000

1010

 

1000

11 10

101

1

1011

 

1100

1001

1011

 

 

 

 

 

1001

1111

1111

1100

 

1101

1110

1100

И

изблице для каждого Д-кода указаны разрешенные комбинации. Все

лру| ие комбинации -

запрещенные.

 

 

 

 

 

 

Наличие

разрешенных и запрен1ен[1ых комбинаций

— очень важное

cBoifcrBo Д-кодов. Оно отличает их от обычных позиционных систем счис­ ления, в 1согорых все комбинации — разреп1еннь[е.

PaccMoi рим н;1и6о.11ее расмрос граненные Д-коды.

Код Д| прямого замещения (система 8421). В коде Д, разрешенные комбинации соответствуют двоичным эквивалентам десятичных цифр с весами разрядо!!. равнь1Х степеням основания 2. Для эгого кода не BbrnojniHсгся усЛ()[и1С (7.2), так как цифры, являюпщеся доио:п1е)1ием до 9, ие получаютс.ч простым инвертированием наборов тетрад.

Код

Д^ (система 2421). Для кода Д ; веса разрядов

тетрады соотвез-

сгвенмо

равны 2, 4, 2, ] ; таблица кодирования делится на две части: от О

до 1 — тетрады повторяюг двоичные эквиваленты; от 5

до 9 — по сравне-

161

7. Выполнение операций над десятичными числами в цифровых автоматах

нию С двоичной системой каждая тетрада содержит избыток +0110. Это дает возможность лк^ую цифру одной части таблицы превратить в ее до­ полнение до 9 простым инвертированием. •

Код Д^ (система 8421+3). Для этого кода все тетрады имеют значения на три единицы больше, чем тетрады кода Д, (отсюда название кода), и для него не существует целочисленных значений веса, которые удовлетво­ ряли бы (7.3).

Коды Д; (система 53-21) и Д^ (система 75-31). Эти коды отличаются от вышеназванных кодов тем, что для них некоторые веса имеют отрица­ тельное значение.

В вычислительных машинах разного назначения чаще всего исгюльзуются коды Д, и Д4.

7.2. Формальные правила поразрядного сложения в Д-кодах

Для определения формальных правил поразрядного сложения чисел, представленных в Д-коде, рассмотрим те особенности, которые присущи этим кодам.

1, Наличие разрешенных и запрещенных комбинаций.

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

2. При сложении тетрад возникает потетрадный перенос п| - 1 6 вме­ сто поразрядного переноса п, = 10 . Это приводит к необходимости коррек­ ции результата.

В самом деле, если складываются

числа

А^ = а^,а^_^ ...а^а^^ и

^л - КК~\ • • • ^1^0' то сумма С^= А^+В^ и

 

 

С, =а, +Ь, + п,^| -

n^q ,

(7.4)

где С, — /-Й разряд суммы; п,^, — перенос из младшей тетрады; п, — пе­ ренос в старшую тетраду (п,_, = {0,1}, п^ = [0,1], ^ = 10).

Далее выведем правила сложения применительно к Д-кодам.

При сложении чисел в коде Д, могут возникнуть следующие случаи. 1. Пусть (7, +h, +п,,| <10, где а^,Ь, —тетрады кода Д, . При сложении

в данном разряде числа образуется сумма меньше 10. Если действия над

162

7 2 Формальные правила поразрядного сложения в Д-кодах

разрядами тетрады проводят по правилам двоичной арифметики, то пра­ вильный результат получают без коррекции.

Пример 7.1. Сложить тетрады а, =0100 и й,=0101 при значении п,_,=0. Р е ш е н и е с, =а, +Ь, 4^п,_, = 1001.

Ответ с, = 1001.

2. Пусть а, + h, + п,_, > 10, т. е. возникает десятичный перенос и сумма должна быть равна а, + й, + п,^| - п, 10 , где п, = 1.

Свидетельством того, что результат неправильный, является либо по­ явление запрещенной комбинации, если 15 > д, +6^ + п,_, к 10 , либо появле­ ние потетрадного переноса п] =\6, что превышает значение десятичного переноса на 6. Следовательно, требуется коррекция результата в данной

тетраде введением поправки, равной

+0110.

Пример 7.2. Сложить геграды а, =0101

к Ь, = 1001 при значении п,_, = 1 ,

Р е ш е н и е с'^ - а,

+6, -f-n,., =1111.

 

Величина с, = 11 М

- занретеннан комбинация. Следовательно, надо ввести поправку;

 

 

1111

 

 

*0110

(1)= 0101,

т.е. резулыа! рапси 0101 в дайной тетрале и образован перенос в старшую тетраду. Ответ с, =0101,н, =1 .

Пример 7.3. Сложить тефадь! а, = 0111, й, = 1001 при значении п,_| = 1 . Р е !л е и и е . с,' = «, + ft, 4^ п,_| = (1)0001.

п', Появление иогегршншго переноса требует коррекции результата: с, =0001 +

+0110 = 0111.

Ответ с, = 0111, р, = I.

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

если при потетрадном сложении перенос в соседнюю старшую тетраду не возникнет {п, =0), то результат суммирования не требует коррекции;

коррекция результата потетрадного сложения путем добавления по­ правки + О! 10 требуется в случае, если:

а) возникает

потетрадный

перенос в старшую тетраду (п, = 1);

б) возникает

запрещенная

комбинация.

163

7. Выполнение операций над десяти

числами в цифровых автоматах

Устройство, которое работает по сформулированным выше правилам, называется одноразрядным десятичным сумматором для Д-кода (рис. 7.1).

Рнс. 7.Г Cipyicrypiiafl схема одноразрядною десятичного сумматора ддя Д[-кода

Рассмотрим пример суммирования целых чисел.

Пример 7.4. Сложить числа /( = 279 = 001001111001 и В = 581 =010110000001 , запи­ санные в коде Д(.

Р е ш е н и е . Прежде всего проводится потетрадное суммирование, а за1ем коррекция там, где это необходимо:

А=

0010

0111

1001

fl=

* 0101

1000

0001

 

 

n i l

1010

с -

 

Olio

оно

1000<-0110<-0000

Здесь стрелка указывает передачу единицы десятичного переноса. Отчет: Г = 860 = 1000 0110 ООООд,.

При сложении чисел в коде Дз могут возникнуть следующие случаи. 1. Пусть а,' < 5 и 6,' < 5 , где а', Ь', — тетрады для кода Д2. Тогда: если а', + h' + п,., < 5 , то результат сложения не требует коррекции;

если а' +Ь' + п,^, > 5 , то результат попадает во вторую часть таблицы кодирования, где с,' = с, + 6 .

Здесь необходима коррекция результата введения поправки ОНО. При­ знак этого — появление запрещенных комбинаций.

164

7 2 Формальные правила поразрядного слолсемия в Д-кодах

2. Пусть а]>Ъ И *,' < 5; 15 > а,' + *,' + п,^, > 5 .

Так как а' = а, + 6, при суммировании поправка не требуется. 3. Пусть U,' г 5 и *' > 5; п, = 1. Тогда:

если 10 < а,' + й,' + п,_| < 15 , то результат требует коррекции путем вве­ дения поправки -ОНО, так как появляется запрещенная комбинация';

если же а[ + Ь] + п,_| < 15 , то результат не требует коррекции.

При потетрадном суммировании в Дз -коде результат суммирования без коррекции получается во всех случаях, кроме следующих:

если при огсутствии переноса в старшую тетраду (п, = 1) возникает за­ прещенная комбинация, то требуется ввести поправку +0110;

если при наличии переноса в старшую тетраду (п, = 1) возникает за­ прещенная комбинация, то требуется ввести поправку -ОНО (1001 в об­ ратом коде или 1010 в дополнительном коде).

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

Пример

7.5. Сложип, числа

/(=001001001110

и 8

= 000111001111, записанные в

КО;ЕС / Ь

 

 

 

 

 

 

 

1'еи1С!!ис

Сначала проводится

сютетрадиое суммирование, а затем ocyiiieciвляетсн

коррекции

 

 

 

 

 

 

 

 

 

А=

0010

0100

1110

 

 

 

fl=

*

0001

1100

1111

 

 

 

 

 

0100»-0001<-1101

 

l'ejyjn.ia[

получился без коррекции,

 

 

 

 

Отжт (•„

=0|000001110|д^

 

 

 

 

 

Пример 7.6. Сложить числа /( = 137 = 000100111101 и S = 457 = 010010111101, запи­ санные н коле 1\2

I* с HI с и и с - Сначала 11ро|Шли1ся гсогетрадное суммирование, а затем коррекгшя:

/(=

0001

ООП

1101

й=

0100*

1011

1101

,0101 1111 1010 ОНО * 0000* 1010

1011 1111 0100

Исключение из этого случая возникает при а, +й, +П,., =15, когда не требуегся вводн1ь поправку, так как появится разрешенная комбинация.

165

7Выполнение операций над десятичными числами в цифровых автоматах

Вмладшей тетраде возникает перенос п, = I и запрещенная комбинация — вводится поправка 1010 в дополнительном коде; в старшей тетраде при п, = 0 возникла запрешеиная комбинация — поправка вводится 0110.

Ответ С = 594 = 1011 | Щ 0100д^ ,

При сложении чисел в коде Д4 возможны следующие случаи.

Пусть а'/= «, + 3, й,"= Ь, + 3, где а'

и Ь" — тетрады для кода Дд . Тогда:

если а" + Ь^+ п,_, < 10 , то с' = а,

+ 3 + й, + 3 + ti,_| = а, +b, + п,_, + 3 + 3 ;

результат требует коррекции путем введения поправки - 0011; если а" + Ь", + n,^j > 10, то с" = а, +Ь, + п,_^, + 3 + 3 .

Здесь возникает десятичный перенос, который, по условию, «уносит» с собой шесть избыючных комбинаций. Следовательно, в данном случае требуется коррекция результата путем введения поправки -^ ООП .

Пример 7.7. Сложить числа ^ --- 35 - 01101000 и В = 28 ^ 0101 1011 . заммсампыс в

коле Дд Р е ш е н и е , Сначала проводится потетрадное сложение, а затем введение поправок-

А=

ОНО

1000

й= *

0101

1011

 

1100 «-ООП

 

ООП + ООП поправки

Г =

1001

ОПО

Ответ Г = 63 = I0010П0„^,

Здесь поправки вводятся при блокировке цепей по1е1радного переноса. Правила введения поправок можно сформулировать так; если при сложении тетрад не возникает переноса (п, = 0 ) , то поправка

равна - О О П (или дополнение + 1101); если же возникает потетрадный пе­ ренос (п, = 1), то поправка равна + 0011.

Аналогичным образом можно рассмотреть правила суммирования для других Д-кодов.

7.3. Представление отрицательных чисел в Д-кодах

Представление Д-кода в разрядной сетке машины может осуществляться в форме либо с фиксированной, либо с плавающей запятой. При этом отри­ цательные числа должны представляться в прямом, обратном или дополни­ тельном кодах. Поэтому, если Л = -О, a^a2 •• - «„, где Й, — тетрады, то

166

'' 3 Представление отрицательных чисел в Д-кодах

[А]^=\,а^а^..Л„\

(7.5)

где а, — дополнение до ly - 1 во всех тетрадах; а, — дополнение до ly - 1 во всех тетрадах, за исключением младшей, для которой это дополнение т q = \0 ,

Из правил преобразования (7.5) следует, что

а, + a,=q-\.

(7.6)

Это означает, что для Д-кодов, для которых выполняется условие (7.2), обратный код получается простым инвертированием набора тетрад.

Пример 7.8. Иайги обратный и дополнительный коды в коде Д, для числа

А= -0,127 = -0,0001 0010 1101д^ .

Ре ш е н и е . Иа основании (7.5) \Л]^ = 1.1110 1101 0010.

Исиольчуя соогмотение \МФ-^п" ~\Мл- находим дополнительный код: \Л\^ =1.1110 11010011.

Прибавление елипииы в младшую тетраду при образовании дополнительного кода в ко­

ле Д; осуществляемся но ггравилам сложения для этого кода.

 

Ответ jJ),,-

- 1.1110 1101 ООЮд,: [А\^ = 1.11 10 1101 0011д^

 

Пример 7.9.

11ай|и обратный и дополнительный

коды в коде

Д4 для числа

/f = -0.45Ч| .0.0111 1000! ЮООЮОд^ .

 

 

 

Ре Ml е ii и е

На основании (7.5)

 

 

 

 

[^1„б =1,1000

0111 ООП

1011;

 

 

[^]„ =1,1000

0111 ООП 1100.

*^'

Прибавление единицы в младшую тетраду при образовании дополнительного кода в ко­ де Д4 не ipeOyei коррекции.

Ответ см формулу (а) даиното ггримера.

Код Д, о1личается тем, чтх) для него не выполняется условие (7.2). Эта особенность кода влияет на образование обратного или дополнительного ко­ да, так как инвертирование набора тетрад означает получение дополнения до 2 - 1 = 1 5 . Следовательно, необходимо убрать разницу. Один из используе­ мых при эюм приемов состоит в том, что во все цифровые тетрады числа в коде Д| добавляется 4-ОПО и после этого проводится инвертирование набо­ ра. Полученное изображение представляет сс^ой обратный код числа.

Пример 7.10. Получить обратный код в коде Д, для числа Л = -0,256 = -4).0010 010101HV

167

''.Выполнение операций над десятичными числами в цифровых автоматах

Ре ш е н и е . Сначала во все тетрады добавляется 0110;

0.0010 0101 ОНО

+4 - 4 -

0110 оно оно

0,1000 1011 1100 После инвертирования этого набора получаем [А]^ = 1,0111 0100 0011д . Ответ [А]^ = 1.0111 0100 0011д^ ,

7.4.Выполнение операций сложения и вычитания чисел

вД-кодах

Все арифметические действия в Д-кодах выполняются над операндами по формальным правилам десятичной арифметики, сформулированным выше.

Возникающие при этом специфические особенности целесообразнее рассмотреть на конкретных примерах.

Пример 7.П. Сложить

в коде Д, на сумматоре дополинтельиого кода числа

^ = Ч).100000100101 и 5 =

0,100101000110.

Р е ш е н и е . Исходные числа представляются в дополнительном коде и их изображения

складываются:

 

 

 

 

|/1), =

1.

0001

U I I I

0101

т, = * 0.

1001

0100

ОНО

,

1.

1010

1011

Ч)]1

 

 

ОНО

ОНО

ОНО поправки

|С), =

0,«-0001«-0010«-0001.

Ответ: Г = 0,0001 0010 0001д .

 

 

Пример 7.12. Сложить

в

коле

Д[ на

сумматоре обратного кола числа

/( =-0,0100 1000 01 Н и fl =-0,0010 ООП ОНО.

Р е ш е ir и е . Исходные числа представляются в обратном коде и их изображения скла­

дываются:

 

 

 

[А]^ =

I,

0101

0001 0010

[Slot =

I, ^ 0111

ОНО ООН

 

^ О,

НОО

01П ОНО

 

 

ОНО

0000 0000 поправки

|С]^ =

1,«-0010

ОТП ОНО,

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

Ответ. Г =-О.ОН! 00100011д .

7.4 Выполнение операций сложения и вычитания чисел в Д-кодах

Пример 7ЛЗ. Сложить в коле Д; на сумматоре дополнительного кола числа /(=-0,0000110100111011 и Я = -0,0000111100101011.

Р е ш е н и е . Если все делать по правилам, то [Л\^ = 1,1111 001011000101, В последней

тетраде получена запрещенная

комбинация, что свидетельствует о необходимости

коррек­

ции путем введения поправки 0110:

 

 

 

 

 

 

 

0101

 

 

 

 

 

•^0110

 

 

 

 

 

1011.

 

 

Аналогично для вгорого числа получаем в последней тетраде 1011. Следовательно,

|/(1. =

1.

1111

0010

1100

1011

 

[В],=*

1.

1111

0000

1101

1011

 

 

1.«г 1110«-0011«-1010«-0||0

 

 

 

0000 * 0000

1010 "^ЮЮ поправки

 

| Г | . =

I,

1110

ООП

0100

ОООО

 

Проводится обратное преобразование дополнительного кода.

 

Ответ С = -0,0001 1100 1 ЮОООООд^ .

 

 

 

Пример 7.14. Сложить

на сумматоре

обратного кода (система Дг)

числа

/( =0.1110101100Пд, и А = -0,|1000100101|д^.

Р е ш е н и е . Сначала числа записываем в обратном коде и их изображения складываем:

(•4)об',

I.

ООП

10П

0100

| f l U =

U,

П10

10П

ООП

 

0,«-0010«- 0П0*^1000

*

 

0000

* 1010 "^0110 поправки

(С]„5 =

О,

0010

0000

т о .

Ответ \С\^ = 0,0010 0000 111 Од^ .

 

 

Пример 7.15. Сложить

в

коде

Д4 на

сумматоре обратного кода числа

/( =-0,1011И0001II1001 и fl = 0,00nlOOOIOOIIOIO.

Р е ш е н и е , Сначала записываем в обратном коде и затем складываем изображения:

(/(U, =

I,

0100

ООП

1000

ОНО

|Я1об =

"•

W 4

100°

4)°'

'ДЮ

 

1,

0111

1100

<х 0010 <-0000

 

 

П01

НОГ "^0011

"^ООИ поправки

[Ги=

I,

0100

1001

0100

ООП.

При введении поправок цепи межтетрадного переноса блокируктгся и отрицательные поправки вносятся в виде дополнения (! 101).

Ответ Г = -01011 ОНО ЮН 1 ЮОд^ .

Рассмотренные выше примеры выполнения операций сложения в Д- кодах позволяют сделать ряд общих замечаннй; коррекция результата может

169

7 Выполнение операций над десятичными числами в цифровых автоматах

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

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

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

7.5. Умножение чисел в Д-кодах

Выполнение операций умножения в Д-кодах при[щипиально проводит­ ся по классической схеме:

умножение чисел сводится к последовательному суммированию част­ ных произведений, гюлучепиых при умножении множимого па очередную цифру множителя. Так как каждая цифра множителя представляется в виде (р4рзр2р|)<' ^•^^ ^ — номер разряда, умножение сопровождается расшифров­ кой значения очередной тетрады множителя и сдвигом на чегыре разряда сразу. Расшифровку можно осуществить разными способами. Простейшим приемом является последовательное вычитание единицы из значения тетра­ ды до получения нуля и соответственно прибавление множимого в сумматор на каждом такте. При умножении на сумматоре прямого кода надо преду­ смотреть дополнительную тетраду на случай мес1чюго переполнения.

Пример 7,!6. Умножить на сумматоре прямого кода (код Д 2 ) числа [^]„р = ! , 0 O i m O ! ;

[S],p =0.00100100.

Р е ш е н и е . При умножении используются сумматор прямого кода для кода Д , на три тетрады и регистры на две тетрады,

Последовательность выполнения операции показана в таблице 7.2.

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

Ответ: [/^В1„р = 1,0000111011101110,

170