ПЭВМ имеет несколько типов вещественных чисел, различающихся количеством разрядов, отведенных для мантиссы и порядка числа. Мы будем рассматривать тип real.
Тип real - это двоичное число, занимающее 6 байт памяти. Нумерация двоичных разрядов 0, 1, 2, ... , 47. Первые пять байтов занимает мантисса числа, шестой байт - характеристика. Нулевой бит отведен для знака числа. Отрицательные числа изображаются в прямом коде.
Характеристика - это преобразованный определенным образом порядок числа.
Порядок вещественного числа может быть положительным или отрицательным. Для знака порядка, как и для знака числа, необходимо отвести один разряд. В этом случае отрицательный порядок, представляющий собой целое однобайтное число, нужно изображать в дополнительном коде, а при обработке порядка выполнять преобразование из прямого кода в дополнительный и обратно. Чтобы ускорить процесс обработки числа, в старший разряд порядка добавляют единицу. Тогда получим
= + 1000 0000 = + 80 = + 128 ,
где - характеристика числа, - его порядок.
Это приводит к смещению значения порядка на 128, в связи с чем характеристику называют также смещенным порядком.
Характеристика всегда положительная.
Если - 128 £ < 0, то 0 £ < 128;
если = 0, то = 128;
если 0 < £127, то 128 < £ 255.
Максимальной характеристике = 255 соответствует порядок = 127, минимальной характеристике = 0 - порядок = -128. При этом получаем соответственно максимальное и минимальное значения вещественного числа:
= 1 × » 1.7 × ; = 1 × » 2.95 × .
Примечание. Если в программе задать x > 1.7 × , то при трансляции будет выведено на экран сообщение «Const out of range» (Константа вне допустимых границ), если задать x < 2.95 × , то переменной x будет присвоено нулевое значение.
В нормализованной двоичной мантиссе первая цифра всегда равна единице. Для экономии памяти мантисса числа формата real в процессоре перед записью ее в основную память изображается сдвинутой на один разряд влево. При этом первая цифра мантиссы, перешедшая в ее целую часть, не включается в код числа. При чтении вещественного числа из памяти в процессор его мантисса восстанавливается.
(мантисса сдвинута на два разряда влево, ее первая единица отброшена, биты числа, включая знаковый, разделены на тетрады).
Здесь порядок = 10, характеристика = 10 + 128 = A + 80 = 8A .
В формате real имеем 2B D0 00 00 00 8A .
Для отрицательного числа достаточно записать единицу в нулевой разряд, что эквивалентно добавлению значения 8 к первой цифре положительного числа. В этом случае для числа 687,25 получим AB D0 00 00 00 8A (первая цифра A = 2 + 8 = 0010 + 1000 = 1010).