
книги из ГПНТБ / Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие
.pdfибольшее положительное число, представимое в разряд ной сетке, показанной на рис. 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 2° |
||
б) |
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