Формы представления чисел в ЭВМ.

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

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

1.25 . 100 = 0.125 . 101 = 0.0125 . 102 = ...


или так:

12.5 . 10-1 = 125.0 . 10-2 = 1250.0 . 10-3 = ... . 


            Одно и то же число может быть записано в различных формах

   452,34  =  452340·10-3 = 0,0045234·105 = 0,45234·103  

 Естественная форма                                             Нормальная форма

 

            Машинным изображением числа называют его представление в разрядной сетке ЭВМ. Числа в ЭВМ также могут быть представлены в двух формах

            1) Естественная (с фиксированной запятой ФЗ)

            2) Нормальная или полулогарифмическая (с плавающей запятой ПЛЗ)

 

В форме с ФЗ в разрядной сетке выделяется строго определенное число разрядов для целой и для дробной частей числа. Левый (старший) разряд хранит признак знака (0 – "+", 1 – "-") и для записи числа не используется.

 

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

A = [A] · KA 

где       А – произвольное число

[A] – машинное изображение числа в разрядной сетке

KA  - масштабный коэффициент.

 

С целью упрощения разработки программ запятую часто размещают сразу после знака числа, тогда  -1< [A] <1, т.е. в ЭВМ хранятся только правильные дроби в диапазоне  ±[A]min = 0,0000….1 = 2-n до ±[A]max = 0,1111….1 = 1 – 2-n (n – количество разрядов для хранения дробной части). Второй распространенный вариант – использование целочисленной арифметики, когда запятая фиксируется на правом краю разрядной сетки. При любом выборе места запятой максимальная абсолютная погрешность представления числа  - единица младшего разряда разрядной сетки.

   

Для машинного представления чисел с ПЛЗ используют формулу [A] = m·2P,  где m - мантисса (|m|<1), а р – порядок (целое число). В разрядной сетке выделяется определенное количество разрядов для хранения мантиссы и порядка с их знаками. Основание системы счисления (2) нигде не хранится, но используется при вычислениях.

           

Существуют форматы с другим размещением мантиссы и порядка в разрядной сетке.

 

            Для каждого числа существует множество нормальных форм:

0,25 = 0,25·100= 0,025·101 = 0,0025·102

 

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

Любое число N в системе счисления с основанием q можно записать в виде N = M . qp, где M — множитель, содержащий все цифры числа (мантисса), а p — целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой.

Если “плавающая” точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:

Мантисса должна быть правильной дробью, у которой первая цифра после точки (запятой в обычной записи) отлична от нуля: 0.12  <=  |M|  <  1. Если это требование выполнено, то число называется нормализованным

Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание — в десятичной системе. Примеры нормализованного представления:

   Десятичная система                           Двоичная система
753.15 = 0.75315 
. 103;             —101.01 = —0.10101 . 211 (порядок 112 = 310)
— 0.000034 = — 0.34 
. 10-4;         0.000011 = 0.11 . 2-100 (порядок   —1002  =  —410).

Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:

Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255.

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

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

Стандартные форматы представления вещественных чисел:

1) одинарный  —  32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда).

2) двойной  —  64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).

3) расширенный  —  80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

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

Представление в виде набора битов

Числа с плавающей точкой представляются в виде битовых наборов, в которых отводяся разряды для мантиссы, порядка, знака числа и знака порядка:


Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

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

Число 6.2510 = 110.012 = 0.11001•211 :


Число – 0.12510 = – 0.0012 = – 0.1•2–10 (отрицательный порядок записан в дополнительном коде):