Lectures / 18-19
.pdfОрганизация ЭВМ и систем
Лекция 18-19
Сопроцессор
Оценка «машинного нуля»
#include <iostream.h> |
|
|
|
|
|
|
||||
|
|
|
|
float |
|
|||||
void main() |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|||
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double |
|||
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
float e1, e = |
|
|
|
|
|
|
|
|
||
1.0; |
|
|
|
|
|
|
|
|||
|
long double |
|
|
|
|
|
||||
M: e = e/2; |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
||||
e1 = e + 1; |
|
|
|
|
|
|
||||
if (e1 > 1.0) goto M; |
|
|
|
|
||||||
cout << "CPU zero: " << e; |
|
|
|
|
||||||
} |
|
|
|
|
|
|
|
|
|
|
Форматы вещественных чисел
8 |
|
|
|
|
|
|
23 |
|
|
s |
Характеристика |
|
Мантисса |
|
|
31 |
Короткий |
23 |
22 |
Неявная единичная |
0 |
|
|
1 |
целая часть мантиссы |
|
|
|
формат |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
11 |
52 |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
|
Характеристика |
|
|
|
Мантисса |
|
… |
63 Длинный
формат
52 1 51 |
0 |
|
15 |
|
64 |
|
|
s |
Характеристика |
1 |
Мантисса |
… |
|
79 |
64 63 |
Явная единичная |
0 |
||
|
Расширенный |
|
целая часть мантиссы |
|
|
|
формат |
|
|
|
|
Форматы вещественных чисел
Формат |
Короткий |
Длинный |
Расши- |
ренный |
|||
|
|
|
|
Длина числа, |
32 |
64 |
80 |
бит |
|||
Длина |
24 |
53 |
64 |
мантиссы |
|
|
|
Диапазон |
10-38... |
10-308... |
10-4932... |
значений |
10+38 |
10+308 |
10+4932 |
Число значащих |
7-8 |
15-16 |
19-20 |
десят. цифр |
|||
Длина ха- |
8 |
11 |
15 |
рактеристики |
|||
Значение |
+127 |
+1023 |
+16383 |
смещения |
|||
Диапазон |
0..255 |
0..2047 |
0..32767 |
характеристик |
|||
Диапазон |
-126... |
-1022... |
-16382... |
порядков |
+127 |
+1023 |
+16383 |
|
Ошибка округления (float)
#include <iostream.h> void main()
{
float a, b, c, t1, t2, t3; a = 95.0;
b = 0.02;
t1 = (a+b)*(a+b);
t2 = a*a+2.0*a*b;
t3 = b*b;
c = (t1 - t2)/t3; cout << "c = " << c;
}
t1 t2
(a +b)2 −(a2 +2ab) ≡1 b2
t3
Вещественные числа
CPU: целые чисел
Слово 16 бит
Двойное слово 32 бита
Четыре слова 64 бита
a |
dw |
1 |
; 16 |
бит |
b |
dd |
-0FCh |
; 32 |
бита |
c |
dq |
90 |
; 64 |
бита |
CPU: BCD числа
Знак
a dt 12456800986 |
; 80 бит |
CPU: вещественные числа
a |
dd |
1.5 |
; короткий |
формат |
|
b |
dd |
-0.11e-1 ; короткий |
-0.011 |
||
c |
dq |
141.0e13 |
; длинный |
||
d |
dt |
8.20167867 |
; расширенный |
Связь процессора и сопроцессора
Декодер
команд
Целочисленное устройство
FPU
Шина данных