Из описанных правил есть исключения. Так, если все биты экспоненты равны нулю (т.е. там стоит число -127), то к мантиссе перед ее началом надо добавлять не "1.", а "0."
Single
было бы равно примерно 5,9·10-39. А так появляется возможность использовать числа до 1,4·10-45. Побочным эффектом этого является то, что числа, меньшие чем 1,17·10-38, представляются с меньшей, чем 24 двоичных разряда, точностью. Если все биты в экспоненте равны единице, а в мантиссе — нулю, то мы получаем комбинацию, известную как INF
(от англ. NAN
(Not A Number — не число). Попытки работы с комбинациями NAN
или INF
приводят к ошибке времени выполнения.Для задания нуля все биты мантиссы и экспоненты должны быть равны нулю (формально это означает 0·10-127
). С учетом описанных правил, если хотя бы один бит экспоненты не будет равен нулю (т.е. экспонента будет больше -127), запись будет считаться нормализованной, и нулевая мантисса будет рассматриваться как единица. Поэтому никакие другие комбинации значений мантиссы и экспоненты не могут дать ноль.Тип Double
Несколько иначе устроен Extended
Single
и Float
. Поэтому если 23-битная мантисса типа Single
обеспечивает 24-знаковую точность, а 52-битная мантисса Double
— 53-битную, то 64-битная мантисса Extended
обеспечивает 64-х, а не 65-битную точность. Соответственно, при денормализованной форме записи первый разряд мантиссы явно содержит 0. За ноль экспоненты принимается значение 16 383.Тип Real
Real
, т.к. эта информация уже перестала быть актуальной.3.2.4. "Неполноценный"
Ранее мы отметили, что FPU всегда выполняет все операции в формате Extended
У FPU существует специальный двухбайтный регистр, называемый
Если восьмой бит содержит единицу (так установлено по умолчанию), то десять байтов внутренних регистров сопроцессора будут задействованы полностью, и мы получим "полноценный" Extended
Double
или даже Single
. Но это касается только мантиссы, экспонента в любом случае будет содержать 15 бит, так что диапазон типа Extended
сохраняется в любом случае.Для работы с управляющим словом сопроцессора в модуле System
Default8087CW
типа Word
и процедура Set8087CW(CW: Word)
. При запуске программы в переменную Default8087CW
записывается
то управляющее слово, которое установила система при запуске программы. Функция Set8087CW
одновременно записывает новое значение в управляющее слово и в переменную Default8087CW
.