Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Чет про программирование / 3) Представление вещественных числен в памяти

.docx
Скачиваний:
33
Добавлен:
25.04.2015
Размер:
17.61 Кб
Скачать

Представление вещественных числен в памяти

Вещественные числа в памяти компьютера представляются в форме с плавающей точкой.

Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком (экспонентой): R = m * p^n.

Мантисса меньше единицы и первая значащая цифра — не ноль.

Пусть в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (р=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы.

В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.

Что такое машинный порядок? В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. В десятичной системе это соответствует диапазону от 0 до 127. Всего 128 значений. Знак порядка в ячейке не хранится. Но порядок, очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка. В таком случае между машинным порядком и истинным (назовем его математическим) устанавливается следующее соответствие: машинный порядок смещен относительно математического на некоторое количество едениц. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль.

Точность

Число́ одина́рной то́чности — компьютерный формат представления чисел, занимающий в памяти одно машинное слово (в случае 32-битного компьютера — 32 бита или 4 байта). Используется для работы с вещественными числами везде, где не нужна очень высокая точность.

Число́ двойно́й то́чности — компьютерный формат представления чисел, занимающий в памяти два машинных слова (в случае 32-битного компьютера — 64 бита или 8 байт). Часто используется благодаря своей неплохой точности, даже несмотря на двойной расход памяти и сетевого трафика относительно чисел одинарной точности.

Число́ четверно́й то́чности — компьютерный формат представления чисел, занимающий в памяти четыре машинных слова (в случае 32-битного компьютера — 128 бит или 16 байт). Используется в случае необходимости крайне высокой точности.

Особые значения чисел с плавающей точкой

Как уже было оговорено выше, в нормализованной форме числа с плавающей точкой невозможно представить ноль. Поэтому для его представления зарезервированы специальные значения мантиссы и порядка - число считается нулём, если все его биты, кроме знакового, равны нулю. При этом в зависимости от значения бита знака ноль может быть быть как положительным, так и отрицательным.

NaN - это аббревиатура от фразы "not a number". NaN является результатом арифметических операций, если во время их выполнения произошла ошибка (примеры см. ниже). В IEEE 754 NaN представлен как число, в котором все двоичные разряды порядка - единицы, а мантисса не нулевая.

В число с плавающей запятой можно записать значение  или . Как и нули со знаком, бесконечности позволяют получить хотя бы близкий к правильному результат вычисления в случае переполнения. Согласно стандарту IEEE 754 число с плавающей запятой считается равным бесконечности, если все двоичные разряды его порядка - единицы, а мантисса равна нулю. Знак бесконечности определяется знаковым битом числа.

В ЯП Паскаль

  1. Single – 4 Байта (8 бит в эксп. + 23 бит в мантиссе)

  2. Double8 Байт (11 бит в эксп. + 52 бит в мантиссе)

  3. Extended10 Байт (15 бит в эксп. + 63 бит в мантиссе)

  4. Real – single/double

Переполнение / недополнение

Как и в случае целых чисел, для кодов вещественных чисел существует понятие переполнение, однако возникает оно не после заполнения разрядной сетки мантиссы – это приводит лишь к нормализации числа, а при заполнении всех разрядов порядка.

Недополнение – число может быть настолько маленьким, что его невозможно представить в памяти ПК в экспоненциальном виде, ввиду того, что числа в памяти хранятся с ограниченной точностью.