с плавающей точкой хранятся как
Представление чисел с плавающей точкой
Числа с плавающей точкой хранятся как двоичные числа в нормализованной форме, которую мы описали:
-0.101100111 х215
При типичной реализации на 32-разрядном компьютере 1 бит выделяется для знака, 23 бита — для мантиссы и 8 битов — для экспоненты. Поскольку для хранения одной десятичной цифры требуется Iog2 10 = 3.3 бита, то точность представления составит 23/3.3 = 7 цифр. Если необходима большая точность, то с помощью 64-разрядного двойного слова с 52-разрядной мантиссой можно получить приблизительно 15 цифр точности представления.
Существует «трюк», с помощью которого можно увеличить количество представимых чисел. Так как все числа с плавающей точкой нормализованы и первая цифра нормализованной мантиссы обязательно 1, эту первую цифру можно не представлять явно.
Экспонента со знаком представляется со смещением так, чтобы представление было всегда положительным, и помещается в старшие разряды слова после знакового бита. Это позволяет упростить сравнения, потому что можно воспользоваться обычными целочисленными сравнениямии не выделять специально поля экспоненты со знаком. Например, 8-разрядное поле экспоненты со значениями в диапазоне 0 .. 255 представляет экспоненты в диапазоне -127 .. 128 со смещением 127.
Мы можем теперь расшифровать битовую строку как число с плавающей точкой. Строка
1 1000 1000 0110 0000 0000 0000 0000 000
расшифровывается следующим образом.
• Знаковый бит равен 1, поэтому число отрицательное.
• Представление экспоненты равно 1000 1000 = 128 + 8 = 136. Удаление смещения дает
136-127 = 9
• Мантисса равна 0.10110 ... (обратите внимание, что восстановлен скрытый бит), т. е.
1/2+1/8+.1/16 = 11/16
• Таким образом, хранимое число равно 29 х 11/16 = 352.
Как и для целых чисел, для чисел с плавающей точкой переполнение (overflow) происходит, когда результат вычисления слишком большой: