|
Представление вещественных чисел |
|
Вещественные числа
1.Формат с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления n в некоторой целой степени р, которую называют порядком: R = m x np. Представление числа в форме с плавающей точкой неоднозначно. Например, справедливы следующие равенства:
25.324 = 2.5324 х 101 0.0025324 х 104 = 2532.4 х 10-2 и т.п.
2.В ЭВМ используют нормализованное представление числа в форме с плавающей точкой. Мантисса в нормализованном представлении должна удовлетворять условию: 0.1 < m < 1. Иначе говоря, мантисса меньше единицы и первая значащая цифра - не ноль.
3. В памяти компьютера мантисса представляется как целое число, содержащее только значащие цифры (0 целых и запятая не хранятся). Следовательно, внутреннее представление вещественного числа сводится к представлению пары целых чисел: мантиссы и порядка.
В разных типах ЭВМ применяются различные варианты представления чисел в форме с плавающей точкой. Для примера рассмотрим внутреннее представление вещественного числа в 4-х байтовой ячейке памяти.
В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы.
±маш. порядок |
М А
|
Н Т И С
|
С А |
1-й байт |
2-й байт
|
3-й байт
|
4-й байт |
В старшем бите 1-го байта хранится знак числа: 0 обозначает плюс, 1 - минус.
Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы (24 разряда). В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапазоне от 0 до 127 (в десятичной системе счисления). Всего 128 значений. Порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка: от -64 до 63.
Машинный порядок смещен относительно математического и имеет только положительные значения. Смещение выбирается так, чтобы минимальному математическому значению порядка соответствовал нуль. 0=-64
Связь между машинным порядком (Мр) и математическим (р) в рассматриваемом случае выражается формулой:
Мр = р + 64.
Формула записана в десятичной системе. В двоичной системе формула имеет вид:
Мр2 = р2 + 100 00002.
В шестнадцатеричной системе формула имеет вид: Мр16 = р16 + 4016.
Для записи внутреннего представления вещественного числа необходимо:
1. перевести модуль данного числа в двоичную систему счисления с 24 значащими цифрами;
2. нормализовать двоичное число;
3. найти машинный порядок в двоичной системе счисления;
4. учитывая знак числа, выписать его представление в 4-х байтовом машинном слове.
4. Записать внутреннее представление числа 250,1875 в форме с плавающей точкой.
Решение.
1. Переведем его в двоичную систему счисления с 24 значащими цифрами:
250,187510 = 11111010,00110000000000002
2. Запишем число в форме нормализованного двоичного числа с плавающей точкой (перенесем запятую на 8 разрядов влево), мантиссу, основание системы счисления и порядок запишем в двоичном виде:
0,111110100011000000000000 х 1021000.
3. Вычислим машинный порядок в двоичной системе счисления:
Мр2 = 1000 + 100 0000 = 100 1000.
4. Запишем представление числа в 4-х байтовой ячейке памяти с учетом знака числа:
0 |
1001000 |
11111010
|
00110000
|
00000000 |
Шестнадцатеричная форма: 48FA3000.
5. По шестнадцатеричной форме внутреннего представления числа в форме с плавающей точкой С9811000 восстановить само число.
Решение.
1. Перейдем к двоичному представлению числа в 4-х байтовой ячейке, заменив каждую шестнадцатеричную цифру 4-мя двоичными цифрами:
1100 1001 1000 0001 0001 0000 0000 0000
1 |
1001001 |
10000001
|
00010000
|
00000000 |
2. Заметим, что получен код отрицательного числа, поскольку в старшем разряде записана 1. Получим порядок числа: р = 10010012 - 10000002 = 10012 = 910.
3. Запишем в форме нормализованного двоичного числа с плавающей точкой с учетом знака числа:
-0,100000010001000000000000 х 101001.
4.Число в двоичной системе счисления имеет вид: -100000010,0012.
5. Переведем число в десятичную систему счисления:
-100000010,0012 = -(1 х 28 +1 х 21 + 1 х 2-3)=-258,12510
6. Диапазон вещественных чисел значительно шире диапазона целых чисел. Положительные и отрицательные числа расположены симметрично относительно нуля. Следовательно, максимальное и минимальное числа равны между собой по модулю.
Наименьшее по абсолютной величине число равно нулю. Наибольшее по абсолютной величине число в форме с плавающей точкой - это число с самой большой мантиссой и самым большим порядком.
Для 4-х байтового машинного слова таким числом будет:
0,111111111111111111111111 х 102 1111111,
После перевода в десятичную систему счисления получим: (1 - 2-24) х 263= 1019.
Множество вещественных чисел, представимых в памяти компьютера в форме с плавающей точкой, является ограниченным и дискретным.
Количество вещественных чисел, точно представимых в памяти компьютера, вычисляется по формуле:
N - 2t х (U - L + 1) + 1.
Здесь t - количество двоичных разрядов мантиссы; U - максимальное значение математического порядка; L - минимальное значение порядка.
Для рассмотренного варианта (t = 24, U = 63, L = -64) получается: N = 2 146 683 548. |
|
| |