1.3 Представление чисел с фиксированной и плавающей точкой
Система вещественных чисел используется в ручных расчетах, предполагается быть бесконечной и непрерывной, т.е. в ней нет ограничений на диапазон и точность чисел.
В компьютерной технике разрядная сетка устройств имеет ограничения -->− - диапазон чисел и точность их представления.
Система машинных чисел является дискретной, образуя подмножество системы вещественных чисел.
Рисунок 1.3. Система машинных чисел.
-->− - max и min представления числа, между которыми находится конечное множество представимых чисел.
Если результат больше xmax, то возникает переполнение (overflow).
Если модуль результата меньше xmin, то фиксируется антипереполнение (underflow).
Большинство компьютеров при антипереполнении возвращают ноль. Поэтому область от до за вычетом истинного нуля называется областью машинного нуля.
В зависимости от назначения и конструкции ЭВМ в них применяются две формы представления двоичных чисел: естественная и нормальная.
Естественной называется такая форма числа, которая в неявном, условном виде реализует формулу, приведенную ниже, т.е. число записывается только с помощью набора значащих цифр xj без явного указания их весов и знаков сложения между ними. Отсчет разрядов (что равносильно указанию их весов) ведется от точки, которая обычно фиксируется между целой и дробной частями числа. Изображение числа имеет следующий вид:
этой формой мы чаще всего пользуемся в повседневной жизни.
Нормальной называется такая форма числа, которая в неявном, условном виде реализует формулу:
когда число представляется как произведение некоторой целой степени основания системы и цифровой части, являющейся правильной дробью. При этом показатель степени основания называется порядком, а цифровая часть -->− - мантиссой числа. Мантисса может иметь знак. Знак мантиссы -->− - это знак всего числа. При записи и порядок, и мантисса представляются в естественной форме, как показано в таблице:
10 3 -->⋅ × 0.118375 = 10 4 -->⋅ × 0.0118375 = 10 -3 -->⋅ × 118375 =
10 111 -->⋅ × 0.1110110011 = 10 1000 -->⋅ × 0.01110110011 = .
При записи числа в нормальной форме достаточно указать только порядок и мантиссу, не фиксируя в явном виде основание системы 10. Например, можно (в машинах так и делается) записать 10 3 · 0.118375 = 0.118375e3. Формула, записанная выражением 1.3, описывает нормальную (как уже было сказанно), научную или полулогарифмическую запись числа, т.к. половина числа записано нормально, а половина логарифмически.
Поскольу в естественной форме положение точки в числе строго зафиксировано между целой и дробной частями, то числа в этой форме называют числами с фиксированной точкой. Соответственно и машины, оперирующие числами в естественной форме, называются машинами с фиксированной точкой.
В определении нормальной формы не наложено никаких ограничений на величину мантиссы, как праило мантисса должна быть правильной дробью. Поэтому положение точки в мантиссе может изменяться при соответствующем изменении величины порядка. Точка при этом как бы плавает. Поэтому часто числа в нормальной форме называют числами с плавающей точкой, а вычислительные машины, использующие эту форму чисел, -->− - машинами с плавающей точкой.
Под разрядной сеткой понимается определенное количество разрядов, выделенных для представления числа, а также разбиение их на упорядоченные группы для представления отдельных частей числа (таких как знак мантиссы, порядок и т.д.). Ниже, при рассмотрении вопроса о представлении чисел изображен пример двух разрядных сеток.
При разработке новой машины инженер-проектировщик должен четко знать, в каких случаях нужно закладывать в проект естественную, а в каких случаях - нормальную форму представления чисел. Поэтому необходимо провести анализ характеристик обеих форм. Рассмотрение приведенной выше таблицы позволяет отметить следующие два недостатка машин, работающих с числами в нормальной форме.
Первый недостаток заключается в необходимости усложнения арифметического устройства из-за возможной неоднозначности записи числа. Из всего множества изображений числа в нормальной форме то изображение, в котором старший разряд мантиссы (первая цифра после точки) не равен нулю, называется нормализованным числом. Соответственно все остальные изображения этого же числа называются ненормализованными.
В памяти машины все числа хранятся только в нормализованном виде, так как в противном случае из-за ограниченности разрядной сетки терялись бы младшие разряды мантиссы, т.е. уменьшалась бы точность представления чисел. Но при арифметических действиях результаты могут получиться и ненормализованными (разрядная сетка регистра для результатов вычислений делается несколько длиннее, чем сетка у ячеек памяти). Поэтому в машинах предусмотрена специальная схема, которая автоматически производит нормализацию тех результатов, которые получились в процессе вычислений ненормализованными. Нормализация заключается в сдвиге мантиссы влево на столько разрядов, сколько у нее было нулей после запятой, и в одновременном уменьшении порядка числа на такое же количество единиц.
В результате нормализации числа получаем
В результате нормализации числа получаем
Второй недостаток заключается в необходимости усложнения структуры АЛУ машины вследствие того, что в нем приходится производить разные действия с разными частями чисел (мантиссами и порядками). Так при умножении двух чисел требуется мантиссы операндов перемножить, а их порядки алгебраически сложить.
Машина, работающая с числами в естественной форме, не имеет указанных недостатков. Однако это не значит, что машины с фиксированной точкой обладают только положительными характеристиками. Эти машины имеют также довольно крупные недостатки, связанные в основном с малым диапазоном чисел, с которыми они могут оперировать при ограниченной разрядной сетке.
Рассмотрим этот вопрос более подробно. Допустим, что имеется машина с девятиразрядной сеткой для записи десятичных (для простоты рассмотрения) чисел. Пусть также задано, что машина может работать в двух режимах: с фиксированной и плавающей точкой, причем на дробную часть числа в первом случае и на мантиссу во втором отводится пять разрядов. Тогда разрядная сетка распределится между частями числа следующим образом:
I. В режиме с фиксированной точкой
II. В режиме с плавающей точкой
Знак числа -->− - 1 разряд,
Знак числа (мантиссы) -->− - 1 разряд,
Целая часть -->− - 3 разряда,
Мантисса -->− - 5 разрядов,
Дробная часть -->− - 5 разрядов,
Знак порядка -->− - 1 разряд,
Итого -->− - 9 разрядов.
Порядок числа -->− - 2 разряда,
Итого -->− - 9 разрядов.
Слева изображена сетка условной машины в режиме с фиксированной точкой, справа -->− - в режиме с плавающей точкой. Заметим, что знак числа имеет двоичную природу, так как может принимать только два значения: плюс или минус. В машинах принято плюс изображать нулем, а минус -->− - единицей, хотя в принципе можно сделать и наоборот. Посмотрим, какие числа можно записать в любую из ячеек нашей машины: