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

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

Недостатки:

а) узкий диапазон представляемых чисел, что приводит к необходимости использования масштабных коэффициентов;

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

Числа с плавающей точкой. Для научно-технических расчетов необходимо представлять числа в широком диапазоне и с достаточно большой точностью. Указанным требованиям отвечают числа с плавающей точкой (рисунок 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