Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 8

Какие числа положительные, а какие отрицательные? При таком представлении отрицательными будут те числа, у которых старший бит будет равен 1, а положительными, — у которых старший бит равен 0.

Диапазоны значений положительных чисел следующие:

Размер, байт

Диапазон

Беззнаковые

Знаковые

1

0–28-1=255

-27–27-1=127

2

0–216-1=65 535

-215–215-1=32 767

4

0–232-1=4 294 967 295

-231–231-1=2 147 483 647

Целых чисел, более четырёх байт размером, процессор Intel за одну операцию обрабатывать не умеет.

3.3.  Числа с плавающей точкой

Основным представлением дробных чисел в большинстве ЭЦВМ является число с плавающей точкой, которое является дискретным вариантом экспоненциального представления.

В 1985 г. был принят стандарт IEEE 754, который поддерживается сейчас большинством процессоров, включая Intel, SPARC и JVM. Основным типом чисел с плавающей точкой считается нормализованное число. Предусмотрены также другие представления.

Стандарт определяет три формата. Во всех трёх случаях в памяти хранится знак, смещённая экспонента и мантисса, которые расположены следующим образом:

Знак

Экспонента

Мантисса

Все три формата начинаются со знакового бита; 0 указывает на положительное число, 1 — на отрицательное. Затем следует смещённая экспонента. Минимальное (0) и максимальное значение экспонент не используются для нормализованных чисел. У них есть специальное назначение.

Нормализованная мантисса состоит из подразумеваемых первого единичного бита и двоичной запятой, за которыми идут произвольные биты, которые и хранятся в памяти. Если все биты мантиссы равны 0, то мантисса имеет значение 1. В английском языке во избежание путаницы для обозначения неявного бита, неявной двоичной запятой и явных битов мантиссы вместо термина «mantissa» используется термин «significand». Все нормализованные числа имеют 1bsignificand<2.

Характеристики форматов приведены в таблице 3.1.

Таблица 3.1. Характеристики форматов чисел с плавающей точкой

Параметр

Точность

одинарная

двойная

повышенная

общее количество битов

32

64

80

количество битов в знаке

1

1

1

количество битов в экспоненте

8

11

16

количество битов в мантиссе

23

52

63

смещение экспоненты

127

1023

область значений экспоненты

-126–127

-1022–1023

наименьшее нормализованное число

2-126

2-1022

наибольшее нормализованное число

≈2128

≈21024

диапазон десятичных дробей

≈10-38–1038

≈10-308–10308

наименьшее ненормализованное число

2-150≈10-45

2-1074≈10-324

Числа с плавающей точкой имеют традиционные проблемы: переполнение, потеря значимости и неинициализированные числа. Для частичного решения этих проблем стандартом предусмотрены ещё четыре типа чисел.

Потеря значимости возникает, если абсолютное значение результата операции менее наименьшего нормализованного числа. На этот случай в стандарт введены ненормализованные числа. Такие числа имеют значение смещённой экспоненты 0, то есть действительное значение -127. У ненормализованных чисел подразумеваемый бит равен 0, а не 1 как у нормализованных.

Наименьшее нормализованное число с одинарной точностью содержит 1 в смещённой экспоненте, то есть -126, и 0 в мантиссе (для одинарной точности: 0.00000001.00000000000000000000000, точки отделяют знаковый разряд от мантиссы) и представляет 2-126. Наибольшее ненормализованное число содержит 0 в смещённой экспоненте, то есть -127, и все единицы в мантиссе (для одинарной точности: 0.00000000.11111111111111111111111) и представляет (1-2-24)·2-126, то есть почти то же самое число. Следует отметить, что это число содержит только 23 значимых бита, а все нормализованные числа — 24 бита.