
Машинні формати дійсних чисел
Формат float – 32 біта.
1 - прихований (невидимий людині) розряд
v
S |
Характеристика |
Нормалізована мантиса |
|||||
31 |
30 |
… |
23 |
22 |
… |
1 |
0 |
1 біт |
8 біт |
23 біта |
Оскільки двійкове число у нас завжди нормалізоване (1 цифра завжди одиниця), то її зберігати необов'язково. Комп'ютер сам її відновлює. Таке представлення дозволяє вірно відображувати 7-8 десяткових цифр, а його діапазон представлення складає десь 1.5 * 10- 45 . 3.4 * 1038 . Точно вичислити допустимий діапазон для дійсних чисел дуже непросте завдання (особливо для дуже малих чисел).
Приклад ± l.0d = ???
± l.0d = ± 1.0*20
Характеристика = 7F + 0 = 7F = 0111 11112
Додатне число 1.0
1 - прихований розряд
V
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
… |
0 |
0 |
||
3 |
F |
8 |
0 |
|
Від’ємне число 1.0
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
… |
0 |
0 |
||
B |
F |
8 |
0 |
|
Приклад ±0.5d = ±1.0* 2-1
Характеристика = 7F - 1 = 7Е.
Позитивне число 0.5:
1 - прихований розряд
V
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
… |
0 |
0 |
||
3 |
F |
0 |
0 |
|
Приклад ± 0.703125d = 0,101101b = ± 1,01101b* 2-1
Характеристика = 7F - 1 = 7Е.
+0.703125d
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
… |
0 |
0 |
||
3 |
F |
3 |
4 |
0 |
0 |
Приклад ±0.05d - ± 1.1(0011)* 2-5
Характеристика = 7F - 5 = 7А.
-0.05
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
… |
|
|
||
B |
D |
4 |
C |
C |
С |
Приклад ± 117.25d = ± 1110101.01b = ± 1.11010101b* 26
Характеристика = 7F + 6 = 85.
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
… |
|
|
||
4 |
2 |
E |
A |
8 |
0 |
Формат double (64-бітове дійсне число)
1 - прихований розряд
V
S |
Характеристика |
Нормалізована мантиса |
||||||
63 |
62 |
|
52 |
51 |
50 |
… |
1 |
0 |
1 біт |
11 біт |
52 біт |
На характеристику витрачається 11 бітів (розряди 52-62). Максимально можливе число, яке можна розмістити в 11-ти бітах, : 111 1111 111 lb. Звідси витікає, що
Зміщення = 011 1111 1111b = 3FFh.
Мантиса теж має прихований розряд. Допустимий діапазон для даних типу double :
1.7 х 10-308 . 1.7 х 10308