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

В С++есть два вещественных типа: float и double. Операции

вещественной арифметики выполняет сопроцессор (FPU).

Значение, полученное в сопроцессоре, преобразуется в тип float или doubleи хранится в этом типе.

Вещественное число представляется в виде (в IBM PC):

 

x=(-1)S * 1.f * 2p

Здесь S – знак(‘+’ - 0/’-’ - 1), 1.f – мантисса числа, p – порядок.

 

В памяти хранится: машинный порядок P=P+д; д зависит от формата и кол-ва разрядов под порядок, 1 в целой части мантиссы в форматах float и double не хранится, но подразумевается, в сопроцессоре 1 в целой части мантиссы хранится.

 

 

S ß--- P’-> <- ---- --f-- ------ ------ ------ ---à

 

K

 

Под машинный порядок p’ отводится K разрядов: в эти к разрядов входит максимальное число max, д=max/2 , половина значений p’ соответствуют положительному истинному порядку p, половина отрицательному. P’ всегда положительный.

K=8 (float); K=11 (double); K=15(long double);

max=255 max=2047 max=32767

соответственно

д=127(float); д=1023(double); д=16383(long double);