Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lectures / 18-19

.pdf
Скачиваний:
43
Добавлен:
16.04.2013
Размер:
229.86 Кб
Скачать

Организация ЭВМ и систем

Лекция 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

Шина данных

Соседние файлы в папке Lectures