Существует естественная и нормальная форма представления чисел. При естественной форме место запятой, отделяющей целую часть числа от дробной, постоянно для всех чисел, с которыми работает цифровая машина,
При нормальной форме представления чисел любое число изображается в виде двух групп цифр: первая группа называется мантиссой, вторая – порядком.
Чтобы уяснить сущность представления числа в нормальной форме, обратимся к конкретному примеру. Возьмем число 525,34 в десятичной системе счисления. Это число можно представить в виде произведения двух сомножителей:
525,34 = 52,534 101
или
525,34 = 0,052534 104.
Очевидно, в общем случае всякое число N можно записать в виде произведения двух сомножителей:
N = m q p.
где m – дробное число;
p – целое число;
q – основание системы счисления.
Число N считается представленным в нормальной форме, если первый множитель m является правильной дробью, т. е. выполняется условие |m|<1. В таком случае множитель m называют мантиссой, а показатель степени p – порядком числа.
Число 525,34 для представления в нормальной форме необходимо преобразовать следующим образом:
525,34 = 0,52534 103.
Пусть в цифровой машине для изображения мантиссы отведено пять цифровых разрядов, а для изображения порядка – два. Тогда в нормальной форме число 525,34 будет записано так:
+ 52534 + 03.
Следует заметить, что изображение числа в нормальной форме неоднозначно, справедливы и следующие записи:
525,34 = 0,052534 104
525,34= 0,0052534 105 и т. д.
Порядок числа может быть не только положительным, но и отрицательным. Так, число 0,003427 можно представить в виде произведения:
0,003427 = 0,3427 10-2.
Соответственно запись числа в нормальной форме будет иметь следующий вид:
+ 3427 – 02.
Таким образом, порядок числа, записанного в нормальной форме, показывает положение запятой, если число изображать набором цифр мантиссы. Поскольку при разных порядках положение запятой бывает различным, машины с нормальной формой представления чисел называются машинами с плавающей запятой.
Например, число в двоичной системе счисления 1101,01 = 0,110101 10100. Здесь 10 – основание двоичной системы счисления. В нормальной форме число запишется так:
+ 110101 + 100.
Различают нормализованные и ненормализованные нормальные числа. Если в первом разряде мантиссы стоит цифра, отличная от нуля, число называют нормализованным, если же эта цифра – нуль, число называют ненормализаванным. Желательно хранить числа в машине в нормализованном виде, так как при этом не теряются последние разряды мантиссы.
При сложении чисел в машинах с плавающей запятой сначала уравниваются порядки слагаемых, а затем складываются мантиссы. Порядком суммы является общий порядок слагаемых. Уравнивание порядков заключается в том, что меньший порядок числа увеличивается до большего и при этом соответственно изменяется мантисса.
Мантиссы обычно складываются в одном из модифицированных кодов по правилам, рассмотренным выше. При этом могут встретиться три случая, которые мы рассмотрим на конкретных примерах.
Все записи даны в двоичной системе счисления применительно к ячейке машины с плавающей запятой. Вычисления производятся в модифицированном обратном коде.
Случай 1. Сложение происходит без переполнения разрядной сетки и нарушения нормализации.
В ячейках машины имеются следующие записи:
слагаемое Х 1 100100110 0 011
слагаемое Y 0 110001101 0 101
Сложение выполняется в несколько этапов.
Первый этап. Сдвиг вправо слагаемого Х (денормализация) с целью уравнивания его порядка 011 с порядком 101 слагаемого Y.
После сдвига запись слагаемого Х будет иметь вид:
Х 1 001001001 0 101.
Второй этап. Перевод мантисс Х и Y в модифицированный обратный код:
мантисса Х 11 110110110;
мантисса Y 00 110001101.
Третий этап. Сложение мантисс: Х 11 110110110+
Y 00 110001101
100 101000011+
'---------------® 1
X + Y 00 101000100.
Четвертый этап. Перевод суммы X + Y в прямой код 0 101000100 и запись результата:
Х+ Y 0 101000100 0 101.
Случай 2. Сложение происходит без переполнения разрядной сетки, но результат после перевода в прямой код оказывается ненормализованным. Такой случай носит название нарушения нормализации вправо.
Перед записью результата в ячейку производится нормализация.
В ячейках машины имеются записи:
слагаемое Х 0 100100110 0 100
слагаемое Y 1 100101010 0 110
Сложение выполняется в пять этапов.
Первый этап. Уравнивание порядков. После сдвига первое слагаемое запишется в ячейке следующим образом:
Х 0 001001001 0 110.
Второй этап. Перевод обеих мантисс в модифицированный обратный код:
Х 00 001001001;
Y 11 011010101.
Третий этап. Сложение мантисс:
+ Х 00 001001001
Y 11 011010101
Х + Y 11 100011110
Четвертый этап. Перевод результата в прямой код:
X + Y 1 011100001 0 110.
Пятый этап. Нормализация и запись результата.
Х + Y 1 111000010 0 101.
Случай 3. При сложении происходит переполнение разрядной сетки. Чтобы определить порядок работы в этом случае, необходимо отметить два обстоятельства:
а) причиной переполнения является то, что сумма |Х+Y|>=1. Очевидно, если бы после уравнивания порядков мантиссы были дополнительно сдвинуты на один разряд вправо, переполнения бы не произошло;
б) признаком переполнения является наличие разных цифр в знаковых разрядах, причем комбинация 01 указывает на то, что сумма положительна, а комбинация 10 – на то, что сумма отрицательна. Следовательно, по левому из двух знаковых разрядов можно сразу установить знак суммы (0 à (+); 1 à (–)).
Исходя из этих обстоятельств, можно сразу получить сумму без повторных вычислений. Для этого нужно сдвинуть результат сложения на один разряд вправо (увеличив при этом порядок на единицу), а затем во второй знаковый разряд занести цифру, стоящую в левом разряде. Эти операции машина выполняет автоматически, после того как устройство сравнения выработает сигнал, свидетельствующий о наличии разных цифр в знаковых разрядах. Далее машина работает, как и в предыдущих случаях. Данный случай переполнения разрядной сетки принято называть нарушением нормализации влево.
Пример.
Х 1 101011011 0 110;
Y 1 110001101 0 101.
Первый этап. Сдвиг второго слагаемого для уравнивания порядков:
Y 1 011000110 0 110.
Второй этап. Перевод мантисс в модифицированный обратный код:
Х 11 010100100;
Y 11 100111001.
Третий этап. Сложение мантисс:
Х 11 010100100
Y 11 100111001
1 10 111011101+
'---------------® 1
Х+Y 10 111011110
Произошло нарушение нормализации влево.
Четвертый этап. Сдвиг результата вправо:
11 011101111.
Пятый этап. Перевод в прямой код и запись результата:
1 10001 0000 0 111.
Вследствие сдвига вправо (четвертый этап) порядок увеличился на единицу (был 110, стал 111).
Контрольные вопросы
1. Представление чисел в форме с плавающей точкой.
2. Что такое нормализованная мантисса?
3. С какой целью используется представление чисел в форме с плавающей точкой.
4. Каков диапазон чисел, представленных в форме с плавающей точкой.
5. Перечислите достоинства и недостатки представления чисел в форме с плавающей точкой и фиксированной точкой.
6. Правила выполнения арифметических операций для чисел представленных в обратном коде в форме с плавающей точкой.
7. Правила выполнения арифметических операций для чисел представленных в дополнительном коде в форме с плавающей точкой.
8. Как переводятся дробные числа из десятичной в двоичную СС?
9. Как переводятся дробные числа из двоичной в десятичную СС?
10. Сколько нужно двоичных разрядов, чтобы представить двузначное десятичное число в диапазоне от 11 до 99?