Кодирование вещественных чисел. Пляшешник А.В. МОУ СОШ 5 города Ржева Тверской области
Для представления вещественных чисел (конечных и бесконечных десятичных дробей) используют формат с плавающей точкой (запятой). Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком: R = m * р n m – мантисса, n – порядок, p – основание системы.
Например, число 25,324 можно записать в таком виде: х10 2. Здесь m= мантисса, n=2 порядок. Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка». Однако справедливы и следующие равенства: 25,324 = 2,5324*10 1 = 0, *10 4 = 2532,4*10 2 и т.п.
Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0,1 p m < 1 p.
Иначе говоря, мантисса меньше единицы и первая значащая цифра не ноль. Значит для рассмотренного числа нормализованным представлением будет: 25,324= * 10 2.
Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (р=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке: ±машинный порядок М АН Т И СС А 1-й байт 2-й байт 3-й байт 4-й байт В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.
Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от до В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие: В семи двоичных разрядах помещаются двоичные числа в диапазоне от до В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие: Машинный порядок Математический порядок Если обозначить машинный порядок Мр, а математический р, то связь между ними выразится такой формулой: Мр = р + 64.
Итак, машинный порядок смещён относительно математического на 64 единицы и имеет только положительные значения. При выполнении вычислений с плавающей точкой процессор это смещение учитывает. Итак, машинный порядок смещён относительно математического на 64 единицы и имеет только положительные значения. При выполнении вычислений с плавающей точкой процессор это смещение учитывает. В двоичной системе счисления смещение: В двоичной системе счисления смещение: М р2 = р М р2 = р
Теперь мы можем записать внутреннее представление числа 25,324 в форме с плавающей точкой. 1)Переведем его в двоичную систему счисления с 24 значащими цифрами. 25,32410= 11001, ,32410= 11001, )Запишем в форме нормализованного двоичного числа с плавающей точкой: 0, * , * Здесь мантисса, основание системы счисления (2 10 =10 2 ) и порядок (5 10 =101 2 )записаны в двоичной системе. 3) Вычислим машинный порядок. Мр2 = = ) Запишем представление числа в ячейке памяти Знак числа порядок мантисса 31 0
Число в форме с плавающей точкой занимает в памяти компьютера 4 байта (число обычной точности) или 8 байт (число двойной точности). Мы рассмотрели пример представления числа 25,324 обычной точности
Для того, чтобы получить внутреннее представление отрицательного числа -25,324, достаточно в полученном выше коде заменить в разряде знака числа 0 на
Задание. Представьте двоичное число -100,1 2 в четырёхбайтовом формате. Представьте число сначала в форме с плавающей запятой.
Решение. -100,1 2 = -0,1001*2 11 Мантисса -0,1001 Порядок 11 Машинный порядок =