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

книги из ГПНТБ / Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие

.pdf
Скачиваний:
91
Добавлен:
27.10.2023
Размер:
29.24 Mб
Скачать

ибольшее положительное число, представимое в разряд­ ной сетке, показанной на рис. 2-2, а, равно:

0,1 1 ... 1 = 1 — 2"31,

31единица

анаименьшее число:

 

 

 

0,00 •• -01

=

2—ЗІ.

 

 

 

 

30 нулей

 

 

 

 

 

1 2~7 2~г 2-J

 

 

 

 

 

 

 

а'г *3

 

 

 

^ЗО s

 

Zs0 Z29 2ZS

 

 

 

г1

б)

a o *1

a 2 a s

 

Ц В М с

ОС:зо ОС;■31

Рис. 2-2. Разрядная сетка

фиксиро­

дом; 6 —

 

ванной запятой.

 

а

— запятая

фиксирована

перед

старшим разря­

 

 

запятая фиксирована

после

младшего

 

 

 

разряда.

 

 

 

В разрядной сетке (рис. 2-2, а) могут быть представ­ лены числа в диапазоне

от — (і — 2-31) до — 2~31 и от + 2-31 до + (і — 2-31),

Кроме того, в разрядной сетке могут быть представ­ лены также коды «положительного» и «отрицательного» нуля (см. § 2-4). Числа

М < 2 -31

не могут быть изображены в разрядной сетке и прини­ маются равными нулю («число выходит за разрядную сетку вправо»).

С другой стороны, все числа

М > 1

также не могут быть представлены в принятой разряд­ ной сетке. Такое число «выходит из сетки влево» («пере­

59

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

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

1 <

|*| <

231,

а также число нуль.

 

 

Все числа

 

 

О <

|*| <

1

не могут быть представлены в этой разрядной сетке и принимаются равными нулю («число выходит за разряд­ ную сетку вправо»).

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

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

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

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

60

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

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

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

Представление числа с плавающей запятой в общем

случае имеет вид:

 

* = S P? ; M < 1 ,

(2-5)

где q — мантисса числа х; S ? — характеристика

числа х;

р — порядок; 5 — основание характеристики.

 

Обычно число 5 совпадает с основанием или целой степенью основания системы счисления, которая исполь­ зуется для представления в ЦВМ мантиссы q.

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

Мантисса q — обычно правильная двоичная дробь. Поэтому распространена следующая форма представле­

ния чисел с плавающей запятой

(5 = 2):

 

x = 2pq - \q \< \.

(2-6)

Порядок р, как и матисса,

представляется

в двоич­

ной системе.

 

 

61

Рассмотрим в качестве примера машину, в которой слова имеют длину 32 двоичных разряда. Пусть число х — 2Pq изображается в машине двоичным словом

«oßo ßi - - -

Ре

а24>

которому соответствует формат данных, показанный на рис. 2-3, а.

Разряды ßoßx ... ß6 отводятся под изображение по­ рядка числа р, при этом разряд ß0 изображает знак по-

Ja a /c м а а т и ссь/

/( числа)

сс

 

4|л 4 4 4 Л

се

СС

оС,

а) О

ßd

и/

г

24

 

\

Модуль порядка

М о д у л ь

ляаппписоь/

11

Зная мантиссы

У

QL*

ßo ßi.

ßz

 

ßz

ß4 ßs \ß6

*1

a2

 

0

 

 

*56

 

 

§1

Модуль порядка

Модуль мантиссы

 

 

 

 

 

 

 

 

 

Рис. 2-3. Разрядная сетка Ц В М с плавающей запятой в форма­

 

 

те слова

(а)

и двойного

слова

(б).

 

 

 

 

 

 

 

 

 

рядка,

а

разряды

ßi ... ß6 — модуль

порядка. Напри­

мер, порядок — 5 представляется в виде

1000101.

Остальные разряды

слова ао аі

... <224 отводятся под

изображение мантиссы q числа. Разряд ао служит для

представления

знака

мантиссы (числа),

а разряды си ...

... сб24 — модуля мантиссы.

нормализован­

Двоичное

число

х= 2 р^ называется

ным, если мантисса

q удовлетворяет неравенству

 

 

\ > \ q \ > \ .

(2-7)

Неравенство показывает, что двоичное число нор­ мализовано, если в старшем разряде мантиссы стоит единица.

62

Установим диапазон изменения чисел, представлен­ ных в этой разрядной сетке.

Поскольку для порядка р (включая его знак) отве­ дено семь разрядов, то порядок может быть любым це­ лым числом от —63 (1111111) до +63 (0111111).

Наибольшее и наименьшее нормализованные поло­ жительные числа в разрядной сетке (рис. 2-3, а) соответ­ ственно равны:

263• 0,111 • • • 1 = 2 63 (1 — 2~24)

и

2_63-0,100- ..0 = 2 -64.

Следовательно, с учетом знака q в разрядной сетке (рис. 2-3, а) можно представлять числа, лежащие в диа­ пазоне

о т — 263 (і — 2-24) до — 2~64 и от + 2_64до +

+ 263 (1 — 2-24),

что соответствует для абсолютных величин диапазону чисел примерно от 10~19 до ІО19.

Введем термин «нормализованный нуль». Так будем называть наименьшее по модулю число. Для разрядной сетки (рис. 2-3, а) нормализованным нулем являются оба числа —2~64 и + 2 ^64, двоичные коды которых име­ ют соответственно вид:

1

Ы

1

1

1

1

11;

1

 

0

. . .

О

0

1

1

1

1

1

1

1 '

1

0

•••

0

“о

Ро

Рі

РгРз

Р4

Ps

Ре

аі

а 2*‘ ‘ °-24-

Число, содержащее во всех разрядах сетки нули,т. е. имеющее положительную нулевую мантиссу и положи­ тельный нулевой порядок, называется «истинным нулем».

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

Пусть г старших разрядов мантиссы равны нулю. Тогда нормализация заключается в сдвиге мантиссы на

63

г разрядов влево и уменьшении порядка на г единиц. При этом в младшие г разрядов мантиссы записывают­ ся нули. После такой операции величина числа не меня­ ется, а условие (2-7) выполняется.

Например, ненормализованное число

л: = 23 (— 0,00001010- --0)

после нормализации примет вид:

X — 2—1(— 0,1010---0).

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

В случае нулевой мантиссы нормализации невозмож­ на и она не производится.

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

Задачи, решаемые на ЦВМ, предъявляют различные требования в отношении точности вычислений. Поэтому во многих ЦВМ для представления чисел с плавающей запятой наряду с форматом, соответствующим машинно­ му слову, как это было принято нами на рис. 2-3, а, пре­ дусматривается также формат двойной длины, занима­ ющий два машинных слова (представление с удвоенной точностью). Пример такого формата показан на рис. 2- 3, б. В формате двойной длины обычно не меняется ко­ личество разрядов для изображения порядка и, следова­ тельно, сохраняется диапазон представляемых чисел, а длина мантиссы увеличивается (в нашем примере — до 56 разрядов).

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

Выше было рассмотрено представление нормализо­ ванных чисел с плавающей запятой в форме

X = 2Р q, где 1 > \q\ >

В некоторых вычислительных машинах получило рас­ пространение представление чисел с плавающей запятой

64

с основанием характеристики, равным целой степени числа два (S = 2W)

x = S pg( 1 > |? | > -£ -],

(2-8)

например,

 

х = 8р ^ 1 > м > у ) ;

(2-9)

X = 16р <7^1 > \q\ >

(2-10)

В скобках указаны соответствующие условия полу­

чения нормализованных чисел.

запятой не­

Использование для чисел с плавающей

двоичного основания характеристики несколько умень­ шает точность вычислений (при заданном числе разря­ дов мантиссы), но позволяет увеличить диапазон пред­ ставляемых в машине чисел и ускорить выполнение некоторых операций, в частности нормализации, за счет того, что сдвиг может производиться сразу на несколько разрядов [по четыре разряда для случая (2-10)]. Кроме того, уменьшается вероятность появления ненормализо­ ванных чисел в ходе вычислений.

Будем для определенности рассматривать числа с плавающей запятой вида

х = 16Р <7.

Пусть по-прежнему формат числа с плавающей запя­ той имеет вид, изображенный на рис. 2-3, а. Хотя в ЦВМ мантисса числа фактически представляется двоичным числом

24

Я = üai2~‘(а,= 0,1),

!=і

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

q = 2 а г 16- / (а, = 0, 1,2.......

F).

/ = і

Число X -считается нормализованным, если старшая шестнадцатиричная цифра <Ji отлична от нуля. В рас-

5—333

65

сматриваемом случае в нормализованном числе три стар­ шие двоичные цифры а ь а 2, а 3 могут равняться нулю. Это несколько уменьшает точность представления чисел при фиксированном числе разрядов мантиссы.

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

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

Используя формат данных, изображенный на рис. 2- 3,а, и форму представления чисел (2-10), получаем сле­ дующий диапазон для нормализованных чисел:

от — 1 б63 (1 — 16-6) до — 16“ 64и от

+ 16-64 до + 1663 (1 — 16_6),

что соответствует для модулей чисел диапазону пример­ но от ІО-77 до ІО76.

Как видно, форма (2-10) позволяет получить значи­ тельно больший диапазон чисел, чем форма (2-6).

Рассмотрим правила выполнения арифметических операций над числами с плавающей запятой для общего случая основания характеристики S.

Пусть имеется два нормализованных числа:

 

x1 = Sp'-q1 и х2 = SPz■q2.

 

Сложение и вычитание чисел

производятся

по фор­

муле (полагаем, что х \> х 2)

 

 

хі ± х2 Sp'-q1 ± SPz-q2 = S Pl {q1± q 2-S (Pl

Рг)).

Умножение и деление выполняются в соответствии с

формулами:

 

 

 

хі Х2 = SPl-q ^S Plq2 =

Sp,+p‘-(ql q2y,

 

xi

^Р' *9i _ gPi—Pi _£i_

 

*7

S p* . q 2

Яі

 

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

66

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

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

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

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

Для упрощения операций

над порядками их сводят

к действиям над целыми

положительными числами, ис­

пользуя

представление чисел

с плавающей запятой со

! Если

S—2W, то мантисса

сдвигается на |ш(рі—р2) ( двоич­

ных разрядов.

 

 

5*

 

 

67

«смещенным порядком». В машинах ЕС ЭВМ при записи числа в память к его порядку р прибавляется положи­ тельное целое число — смещение N. При этом

N = 1“Ь ІРмаксІ-

Смещенный порядок p '— p-\-N всегда положителен. Для его представления нужно такое же количество раз­

рядов, как для модуля и знака порядка р.

рис. 2-3, сме­

 

Для

разрядной

сетки,

 

показанной на

щение

ІѴ= 64. Для

хранения смещенного

порядка р '=

=

р+64 выделим разряды

ß0, ßi, ... ß6При этом р' бу­

дет принимать значения от //= 1 2 7

(при р — 63) до р '=

=

0 (при

р = —64). В табл. 2-2 для рассматриваемого

Десятичное

Эквивалентное

 

 

 

Таблица 2-2

 

ПредставлениечиславпамятиЦВМ

шестнадцати­

 

 

число

ричноечисло

0

1000100

001111111010000100000000

 

16 289

0 ,3 / м і.(1 0 )}6

 

0,01

 

0.28F5C3

0

0111111

(44 3/ѴІ100)

 

 

001010001111010111000011

 

— 0,01

—0.28F5C3

1

0111111

((3FB F 28F5C3)

 

001010001111010111000011

 

— 16 289

— 0,3Fi41-(10)?6

1

1000100

28F5C3)

 

001111111010000100000000

 

 

 

 

 

 

 

(С4 3F4100)

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

2-4. П Р Я М О Й , О Б Р А Т Н Ы Й И Д О П О Л Н И Т Е Л Ь Н Ы Й К О Д Ы

При проектировании вычислительных устройств не­ обходимо решить вопрос о способе представления в ма­ шине положительных и отрицательных чисел и о призна­ ке переполнения разрядной сетки (см. § 2-3). Указан­ ный вопрос решается применением специальных кодов для представления чисел. При помощи этих кодов опе­ рация вычитания (или алгебраического сложения) сво­

68

Соседние файлы в папке книги из ГПНТБ