Среднее Заочное отделение / 4 семестр / Цифровые и микропроцессорные устройства / Электронный конспект лекций (ЦиМПУ)
.pdfДостоинством формы с фиксированной точкой является простота выполнения арифметических операций, что обеспечивает простоту арифметического устройства и высокое быстродействие.
Недостатки:
а) узкий диапазон представляемых чисел, что приводит к необходимости использования масштабных коэффициентов;
б) низкая точность представления малых чисел из-за ограниченного числа разрядов в разрядной сетке, что снижает точность вычислений.
Числа с плавающей точкой. Для научно-технических расчетов необходимо представлять числа в широком диапазоне и с достаточно большой точностью. Указанным требованиям отвечают числа с плавающей точкой (рисунок 1.3).
|
2 |
1 |
|
||
|
|
|
|
|
|
|
Знак
числа
2 |
2 |
2 |
3 |
… |
2 |
m |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Модуль мантиссы
Знак
(m разрядов)
порядка
2 |
p 1 |
2 |
p 2 |
… |
2 |
1 |
2 |
0 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Модуль порядка (р разрядов)
Рисунок 1.3 – Распределение разрядной сетки для двоичных чисел с плавающей точкой
Число состоит из мантиссы, старший разряд которой определяет знак числа, и порядка со знаком. Значение модуля мантиссы представляется двоичным дробным числом, т. е. точка фиксируется перед старшим разрядом модуля мантиссы. Порядок представляется целым числом и указывает действительное положение точки в числе, т. е. определяет вес числа. Точка «плавает» в изображении числа при изменении порядка. Такая форма представления числа называется нормальной. Любое число A в форме с плавающей точкой выглядит следующим образом:
где
M(P)
– мантисса числа А;
P
, |
(1.3) |
– основание СС; q – порядок числа А.
Например, десятичное число А = 175, записанное в естественной форме, может быть представлено в нормальной форме в виде:
A = 175(10) = 0.175 ∙ 103 = 0.0175 ∙ 104 = 1750 ∙ 10-1.
11
Аналогично в двоичной СС:
10.101 |
10 |
(2) |
101.01 10 1 . |
|
0.10101 10 |
|
|||
(2) |
|
(2) |
(2) |
Точность представления чисел зависит от количества значащих цифр мантиссы. Для повышения точности числа с плавающей точкой представляются в нормализованной форме, при которой значение модуля мантиссы лежит в пределах:
2-1 ≤ |M| < 1. |
(1.4) |
Признаком нормализованного числа служит наличие единицы в старшем разряде.
Минимальное по модулю число для нормализованной мантиссы получается, если взять минимальную мантиссу и максимальный отрицательный порядок:
| A | |
|
2 |
2 |
(2 |
p |
1) |
2 |
2 |
p |
. |
(1.5) |
|
мин |
|
1 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
Чтобы получить максимальное по модулю число, необходимо взять максимальную мантиссу и максимальный положительный порядок:
| A | |
|
(1 2 |
m |
)2 |
(2 |
p |
1) |
2 |
(2 |
p |
1) |
|
|
|
|||||||||
макс |
|
|
|
|
|
|
. |
||||
|
|
|
|
|
|
|
|
|
|
|
(1.6)
Очевидно, что диапазон представляемых чисел зависит только от числа разрядов порядка. Например, если число разрядов для записи порядка P = 6, то получается |A|мин = 2-64 и |A|макс ≈ 263.
Достоинства:
а) широкий диапазон представляемых чисел, поэтому не нужны масштабные коэффициенты;
б) высокая точность представления как больших, так и малых чисел, так как мантисса нормализована, что обеспечивает высокую точность вычислений.
Недостатком является сложность выполнения арифметических операций, что усложняет схему арифметического устройства и снижает быстродействие.
Таким образом, обе формы представления двоичных чисел имеют свои достоинства и недостатки. Поэтому если требуется высокое быстродействие, то применяют форму с фиксированной точкой, а если требуется высокая точность вычислений, то применяют форму с плавающей точкой.
12
1.1.4 Способы кодирования двоичных чисел со знаком
Кодирование двоичных чисел в цифровых устройствах необходимо для представления чисел со знаком, т. е. упрощения операции вычитания. Двоичные числа, представленные в естественной и нормальной формах, кодируются в цифровых устройствах с помощью специальных машинных кодов: прямого, об-
ратного и дополнительного.
Прямой код является простейшим машинным кодом и получается при кодировании в числе только знака. Прямой код положительного числа совпадает с его изображением в естественной форме. Прямой код отрицательного числа совпадает с его изображением в естественной форме, за исключением знакового разряда, в который ставится единица.
Пример 1.5. Представим в прямом коде двоичные числа X1 и |
X2 |
: |
X1 = + 0.11010; [X1]пр = 0,11010; X2 = – 0.11010; [X2]пр = 1,11010.
Знаковый разряд числа веса не имеет и отделяется от цифр числа запятой. Прямой код используется для хранения чисел в памяти, при вводе-выводе информации, а также при выполнении операций умножения и деления. Недостатком прямого кода являются разные правила счета для положительных и отрицательных чисел. Поэтому в цифровых устройствах вычитание заменяют операцией сложения чисел в обратном или дополнительном кодах.
Дополнительный код положительного двоичного числа совпадает с его прямым кодом. Дополнительным кодом отрицательного двоичного числа называется его дополнение до граничного числа Xгр. Получается по следующему правилу: в знаковом разряде записывается единица, а во всех других разрядах цифры заменяются на взаимно обратные, после чего к младшему разряду числа добавляется единица.
Аналитически дополнительный код для двоичных чисел, меньших единицы,
образуется по формуле: |
|
|
|
[ ]доп { |
если |
(1.7) |
|
гр если |
|||
|
|
||
где Xгр – граничное число, |
| | |
|
Пример 1.6. Представим в дополнительном коде двоичные числа X1 и X2:
13
X |
1 |
= + 0.11010; |
[X |
] |
доп |
= 0,11010 |
|
|
|
1 |
|
|
|
||
X |
2 |
= – 0.11010; |
[X |
] |
доп |
= 1,00101 |
|
|
|
2 |
|
+ |
|
||
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1,00110 |
Обратное преобразование, т. е. получение двоичного числа в естественной форме из дополнительного кода выполняется по тому же правилу, что и получение дополнительного кода. Для этого следует вначале заменить все цифры, на взаимно обратные, после чего добавить единицу к младшему разряду. В результате получается прямой код, затем выполняется обратное преобразование из прямого кода к естественной форме числа.
Пример 1.7. Выполним обратное преобразование из дополнительного кода в естественную форму двоичного числа:
[X] |
доп |
= 1,00110 |
[X] |
пр |
= 1,11001 |
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
1,11010; |
|
|
|
|
|
X = – 0.11010 |
(2) |
. |
||
|
|
|
|
|
|
|
Полученный результат преобразования совпадает с исходным значением числа X2 в примере 1.6.
Обратный код положительного двоичного числа совпадает с его прямым кодом. Обратным кодом отрицательного двоичного числа, называется его дополнение до максимального числа Xмакс, представляемого в данной разрядной сетке. Получается по следующему правилу: в знаковом разряде записывается единица, а во всех остальных разрядах цифры заменяются на взаимно обратные.
Аналитически обратный код для двоичных чисел, меньших единицы, обра-
зуется по формуле: |
|
|
[ ] |
{ |
(1.8) |
Пример 1.8. Представим в обратном коде двоичные числа X1 и X2:
X1 |
= + 0. 11010; |
[X1]обр = 0, 11010. |
X2 |
= – 0. 11010; |
[X2]обр = 1, 00101. |
14
Основное достоинство обратного кода по сравнению с дополнительным состоит в простоте процесса его формирования. Однако скорость вычитания чисел в этом коде несколько ниже, чем в дополнительном.
Обратное преобразование, т. е. получение двоичного числа в естественной форме из обратного кода выполняется по тому же правилу, что и получение обратного кода. Для этого следует в начале получить прямой код, меняя все цифры, за исключением знаковой, на взаимно обратные, а затем из прямого кода перейти к естественной форме числа.
Пример 1.9. Выполняем обратное преобразование из обратного кода в естественную форму двоичного числа:
[X]обр = 1, 00101; |
[X]пр = 1, 11010; |
X = – 0. 11010(2). |
Полученный результат преобразования совпадает с исходным значением числа X2 в примере 1.8.
1.1.5 Арифметические операции над двоичными числами с фиксированной точкой
Основной операцией, которая используется в цифровых устройствах при различных вычислениях, является операция алгебраического сложения (сложение положительных и отрицательных чисел). Вычитание, умножение и деление также выполняются с помощью операции сложения и некоторых других действий.
Сложение чисел в цифровых устройствах производится так же, как и при ручном счете, т. е. путем поразрядного суммирования чисел, начиная с младших разрядов. Сложение двоичных чисел выполняется в соответствии с табли-
цей 1.2:
Таблица 1.2 – Сложение двоичных чисел
Слагаемые |
Сумма |
Перенос |
|
|
|
|
|
Х1 |
X2 |
S |
C |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
|
|
|
|
15
Из таблицы 1.2 следует, что при сложении двух единиц образуется единица переноса в соседний старший разряд, т. е. 1+1 = 10(2).
Пример 1.10. Выполним сложение двух положительных двоичных чисел, представленных в естественной форме:
|
1 1 1 1 |
|
|
переносы |
|
|
|
||
X1 |
= 0. 1 1 0 0 1 1 1(2) |
|
|
|
+ |
|
|
|
|
X2 |
= 0. 0 1 0 1 1 0 0(2) |
|
|
|
|
|
|
|
сумма |
X3 |
= 1. 0 0 1 0 0 1 1(2) |
|
|
|
|
Из примера следует, что начиная с четвертого разряда сложение производится с учетом переноса из соседнего младшего разряда.
Вычитание двоичных чисел выполняется в соответствии с таблицей 1.3:
Таблица 1.3 – Вычитание двоичных чисел
Заем |
Уменьшаемое |
Вычитаемое |
Разность |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
Из таблицы 1.3 следует, что при вычитании единицы из нуля производится заем из соседнего старшего разряда, т. е. 10 – 1 = 1(2).
Пример 1.11. Выполним вычитание двух двоичных чисел, представленных в естественной форме:
|
|
1 1 |
|
|
|
заемы |
|
|
|
|
|
||
|
X1 |
= + 0. 1 1 0 0 1 1 1(2) |
|
|
|
|
|
+X2 |
= – 0. 0 1 0 1 1 0 0(2) |
|
|
||
|
|
|
|
|
|
|
|
X3 = + 0. 0 1 1 1 0 1 1(2) |
|
разность |
|||
|
||||||
Так как | X1 | > | X2 |, то выполняется вычитание X2 |
из X1 и результату при- |
сваивается знак плюс.
Из примера следует, что при вычитании происходит заем из соседнего старшего разряда. Следовательно, при сложении и вычитании двоичных чисел в естественной форме используются различные правила, поэтому вычитание заменяется сложением в машинных кодах.
16
При алгебраическом сложении двоичных чисел в обратном и дополнительном кодах используются следующие правила:
а) знаковые разряды суммируются так же, как и значащие разряды числа; б) единица переноса из знакового разряда при сложении в дополнительном
коде отбрасывается, а в обратном коде для получения правильного результата эта единица прибавляется к младшему разряду суммы. Эта операция называется циклическим переносом;
в) если в знаковом разряде суммы получился нуль, то сумма положительна и для перехода к естественной форме числа для оценки результата обратное преобразование не требуется. Если же в знаковом разряде суммы получилась единица, то сумма отрицательна и требуется обратное преобразование.
Пример 1.12. Выполним суммирование двоичных чисел
X |
= + 0.1100111 и |
|
X |
2 |
= – 0.0101100 в обратном коде: |
|||||
1 |
|
|
||||||||
|
|
|
|
|
|
|
1 |
1 |
1 1 1 |
переносы |
|
[X |
] |
обр |
= |
0, 1 1 0 0 1 1 1 |
|
||||
|
1 |
|
|
|
|
|
|
|||
|
+ |
|
|
|
|
|
|
|
|
|
|
[X |
] |
обр |
= |
1, 1 0 1 0 0 1 1 |
|
||||
|
2 |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
1 |
0, 0 1 1 1 0 1 0 |
|
|
|
|
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
1 |
циклический перенос |
|
[X |
|
] |
обр |
= |
0, 0 1 1 1 0 1 1 |
сумма |
|||
|
|
3 |
|
|
|
|
|
Результат получился положительным, т. е. X3 = + 0.0111011(2). Пример 1.13. Выполним суммирование тех же двух двоичных чисел
X |
= + 0.1100111 и |
X |
2 = – 0.0101100 в дополнительном коде: |
|||||||||
1 |
|
|||||||||||
|
|
|
|
|
1 1 |
1 |
|
|
|
переносы |
||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
[X1]доп = 0, 1 1 0 0 1 1 1 |
|
|||||||
|
|
+[X2]доп = 1, 1 0 1 0 0 1 1 |
|
|
||||||||
|
|
|
|
[X3]доп = 1 0, 0 1 1 1 0 1 1 |
|
|
сумма |
|||||
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
отбрасывается |
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
X3 = + 0. 0 1 1 1 0 1 1(2). |
|
17
Результат получился положительным и совпал с результатами суммирования в обратном коде и вычитания в естественной форме.
При сложении чисел одного знака может произойти переполнение разрядной сетки, что приведет к искажению результата. На практике для выявления переполнения разрядной сетки применяют модифицированные машинные коды, в которых два знаковых разряда. Для положительных чисел в знаковых разрядах записывается 00, для отрицательных – 11. Появление комбинаций 01 или 10 в знаковых разрядах свидетельствует о переполнении разрядной сетки, т. е. является сигналом ошибки. Например, двоичное число X = – 0.110101 в модифицированном дополнительном коде будет записано следующим образом:
X Мдоп = 11,001011.
Пример 1.14. Выполним суммирование в дополнительном модифицированном коде двух двоичных чисел Х1 = – 0.1100111 и Х2 = 0.0101100.
|
|
|
|
1 1 1 |
|
|
переносы |
|
|
|
|
|
|
|
|
[X |
] |
доп |
= 1 1, 0 0 1 1 0 0 1 |
|
|
||
1 |
|
|
|
|
|
||
+ |
|
|
|
|
|
|
|
[X |
] |
доп |
= 0 0, 0 1 0 1 1 0 0 |
|
|
||
2 |
|
|
|
|
|
||
[X |
] |
доп |
= 1 1, 1 0 0 0 1 0 1 |
|
|
||
3 |
|
|
|
|
|
||
[X |
] |
пр |
|
= 1 1, 0 1 1 1 0 1 0 |
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
+ |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 1, 0 1 1 1 0 1 0 |
|
|
|
|
|
X |
3 |
= – 0. 0 1 1 1 0 1 1 |
(2) |
сумма |
|
|
|
|
|
|
|
Результат получился отрицательным, и потребовалось обратное преобразование.
Умножение двоичных чисел в цифровых устройствах производится по тем же правилам, что умножение десятичных чисел и делится на два этапа.
На первом этапе определяется знак произведения путем суммирования по модулю 2 знаковых разрядов сомножителей. Если знаковые разряды сомножителей одинаковы и равны 0 или 1, то сумма по модулю 2 равна 0 (произведение положительно), если же знаковые разряды сомножителей не совпадают, то эта сумма будет равна 1 (произведение отрицательно).
18
На втором этапе определяется абсолютное значение произведения путем перемножения этих чисел без учета знака (кодовое умножение). Для этого необходимо вычислить частичные произведения, затем сдвинуть их и сложить между собой.
Суммирование частичных произведений осуществляется в несколько этапов, поскольку арифметическое устройство может выполнять операцию сложения сразу только с двумя числами.
Если умножение выполняется, начиная со старшего разряда множителя, то частичные произведения следует сдвигать вправо.
|
Пример 1.15. Умножим целые |
положительные двоичные числа |
|||||||
X |
= 1101 и |
X |
2 |
= 1011. Умножение выполним, начиная с младшего разряда |
|||||
1 |
|
|
|||||||
множителя. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
X1 = 1 1 0 1(2) |
|
|
множимое |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
× |
|
|
|
|
|
|
|
|
|
X2 = 1 0 1 1(2) |
|
|
множитель |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
1 1 0 1 |
|
|
|
|
|
|
|
|
|
+ 1 1 0 1 |
|
|
|
частичные произведения |
|
|
|
|
|
+ 0 0 0 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ 1 1 0 1 |
|
|
|
|
|
|
|
X3 = 1 0 0 0 1 1 1 1(2) |
|
|
полное произведение |
|||
|
|
|
|
|
1.1.6 Особенности арифметических операций над двоичными числами с плавающей точкой
При сложении двоичных чисел с плавающей точкой операции производятся отдельно с мантиссами и порядками. Результат выполнения операции должен представляться в нормализованном виде, поэтому машинная операция сложения двоичных чисел с плавающей точкой распадается на четыре этапа:
а) выравниваются порядки слагаемых. Выравнивание порядков производится в сторону большего порядка, чтобы при выравнивании не терять старшие разряды мантиссы. Мантисса преобразуемого числа сдвигается вправо на необходимое количество разрядов;
б) производится преобразование мантисс слагаемых в дополнительный или обратный код;
в) мантиссы слагаемых суммируются по правилам сложения дробных двоичных чисел с фиксированной точкой;
19
г) производится нормализация суммы и округление мантиссы в случае необходимости.
Умножение двоичных чисел с плавающей точкой также производится в четыре этапа:
а) определение знака произведения путем сложения по модулю 2 знаковых разрядов мантисс сомножителей;
б) перемножение модулей мантисс по правилам для двоичных чисел с фиксированной точкой;
в) определение порядка произведения путем алгебраического сложения порядков сомножителей с использованием дополнительного либо обратного кода; г) нормализация результата и округление мантиссы в случае необходимо-
сти.
1.1.7 Сложение двоично-десятичных чисел со знаком
Способ суммирования двоично-десятичных чисел зависит от того, какой двоичный код выбран для представления десятичных цифр. Ниже рассматривается операция суммирования при использовании кода 8421.
При сложении двоично-десятичных чисел выполняются дополнительные действия:
–анализ межтетрадных переносов при сложении;
–анализ диапазона двоичных чисел в каждой тетраде начальной суммы;
–введение поправок (коррекции) в некоторые тетрады по результатам анализа.
При алгебраическом сложении двоично-десятичных чисел необходимо рас-
смотреть два случая: операнды имеют одинаковые знаки и операнды имеют разные знаки.
В первом случае сложение в каждой тетраде должно выполняться по модулю 10. Если в результате сложения в тетраде возникает начальное число Ti нач ≥ 10, то должен быть перенос в соседнюю старшую тетраду, а в данной тетраде должна формироваться разность Ti = Ti нач – 10. На самом деле в каждой тетраде выполняется сложение по модулю 16, т. е. перенос в соседнюю старшую тетраду формируется в том случае, если Ti нач ≥ 16, а в данной тетраде получается разность Ti = Ti нач – 16.
При этом в зависимости от величины Ti нач возможны три подслучая:
1)0 ≤ Ti нач ≤ 9, когда нет ни десятичного, ни шестнадцатеричного переноса,
врезультате чего в данной тетраде формируется правильная десятичная сумма:
Ti = Ti нач .
20