Представление вещественных чисел в формате с плавающей запятой
Числовые величины, которые могут принимать любые значения (целые и дробные) называются вещественными числами. Вещественные числа в памяти компьютера представляются в форме с плавающей точкой.
Форма с плавающей точкой использует представление вещественного числа А в виде произведения мантиссы m на основание системы счисления q в некоторой целой степени p, которую называют порядком:
А=m×qp
Например, число 139,76 можно записать в виде: 0,13976×103. Здесь
m = 0,13976 – мантисса, q=10 – основание системы счисления,
p=3 – порядок.
Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная в мантиссе. Отсюда название «плавающая точка». Однако справедливы и следующие равенства:
139,76=13,976×101 = 1,3976×102 = 0,013976х104 = 13976 х10-2
Получается, что представление числа в форме с плавающей точкой неоднозначно? Чтобы не было неоднозначности, в ЭВМ используют нормализованное представление числа в форме с плавающей точкой.
Мантисса в нормализованном представлении должна удовлетворять условию: 1/n < | m | < 1, то есть мантисса меньше единицы и первая значащая цифра - не ноль. Следовательно, для рассмотренного числа нормализованным представлением будет: 0,13976х103.
В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой.
Пример. Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (q=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы. Вот как эта информация располагается в ячейке:
± маш. порядок | МАНТИССА | ||
1-й байт | 2-й байт | 3-й байт | 4-й байт |
В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 – минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.
Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок может быть как положительным, так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком (одним из 128 значений) и истинным (назовем его математическим) устанавливается следующее соответствие:
Машинный порядок | … | … | |||||||||
Математический порядок | -64 | -63 | -62 | -61 | … | … |
Если обозначить машинный порядок Мq, а математический q, то связь между ними выразится формулой: Мq = q + 64
Итак, машинный порядок смещен относительно математического на 64 единицы и имеет только положительные значения. Полученная формула записана в десятичной системе счисления. В двоичной системе счисления формула имеет вид:
Мq = q + 1 000 0002
При выполнении вычислений с плавающей точкой процессор это смещение учитывает.
Алгоритм для получения представления действительного числа в памяти ЭВМ:
1) Перевести модуль данного числа в двоичную систему счисления;
2) Записать полученное двоичное число в нормализованном виде;
3) Определить машинный порядок с учетом смещения;
4) Учитывая знак заданного числа (0 – положительное; 1 – отрицательное), записать его представление в памяти ЭВМ.
Например, запишем внутреннее представление числа 139,76 в форме с плавающей точкой в 4-х байтовой ячейке:
1) Переведем десятичное 139,76 и запишем его 24-значащими цифрами: 139,7610 = 10001011,11000010100011112
2) Запишем полученное двоичное число в форме нормализованного двоичного числа с плавающей точкой:
10001011,11000010100011112 = 0,1000101111000010100011112 х101000,
где 0,1000101111000010100011112 – мантисса;
10 – основание системы счисления (210=102);
1000 – порядок (810=10002).
3) Определим машинный порядок:
Mq2 = 1000 + 1000000 = 1001000
4) Запишем представление числа в ячейке памяти:
± маш. порядок | МАНТИССА | ||
0 1001000 |
Для того чтобы получить внутренне представление десятичного отрицательного числа -139,76 достаточно в полученном выше представлении заменить в разряде знака числа 0 на 1. Никакого инвертирования, как для отрицательных целых чисел, здесь не происходит.
Задачи для самостоятельного решения
1. Компьютер работает только с целыми положительными числами. Каков диапазон изменения чисел, если для представления числа в памяти компьютера отводится 4 байта?
2. Каков диапазон изменения целых чисел, если для представления числа в памяти компьютера отводится 4 байта?
3. Записать в двоичной и шестнадцатеричной форме внутреннее представление наибольшего положительного целого и наибольшего по абсолютной величине отрицательного целого числа, представленных в 1-байтовой ячейке памяти.
4. Получить внутреннее представление целого числа 160710 в 2-х байтовой ячейке памяти.
5. Получить внутреннее представление целого числа -160710 в 2-х байтовой ячейке памяти.
6. По шестнадцатеричной форме внутреннего представления целого числа F67D в 2х-байтовой ячейке восстановить само число.
7. Представить число 0,005089 в нормализованной форме с плавающей точкой в десятичной системе счисления.
8. Получите двоичную форму внутреннего представления действительных чисел 224,25 и -224,25 в формате с плавающей точкой в 4-х байтовой ячейке.
9. Запишите в десятичной системе счисления целое число, если его дополнительный код 1000000110101110.
Список литературы
Основная литература
1. Информатика (курс лекций) / В. Т. Безручко. - М.: ИД "Форум": ИНФРА-М., 2006. – 432с.
2. Информатика: 3-е изд. перераб. / под ред. Н.В.Макаровой. – М.: Финансы и статистика, 2009. – 768 с.
3. Информатика / В. А. Каймин. – М.: ИД "Форум": ИНФРА-М, 2008. – 285 с.
4. Информатика: аппаратные средства персонального компьютера: Учеб. пособие. / В. Н. Яшин. - М.: ИНФРА-М, 2008. – 254 с.
5. Информатика. Учебное пособие / Попова О.В. Красноярск: Красноярский институт экономики Санкт-Петербургской академии управления и экономики (НОУ ВПО), 2007. — 186 с.
Дополнительная литература
1. Информатика, часть 1: Учебно-методическое пособие для студентов очной и заочной форм обучения / Болотов А. М., Вологжанин О.Ю., Катанова Т.Н., Сыромятников И.И., Хренова Н.Ф. - Пермский институт (филиал) ГОУ ВПО "Российский государственный торгово-экономический университет": Издательство "ОТ и ДО", 2009. – 163 стр.
2. Введение в информатику. Лабораторные работы. / Авт.-сост. А.П. Шестаков; Перм. ун-т. — Пермь, 1999. (Ч. I — 56 с.)
3. Арифметические операции в позиционных системах счисления. Электронный ресурс: http://www.chebgym5.ru/inf/p32aa1.html
4. Представление информации в компьютере. Электронный ресурс: http://ulkolledg.narod.ru/material/Burdina_2/index.htm