Wykład 2:

20
Wykład 2: Liczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor budowa podstawowe operacje

description

Wykład 2:. L iczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor budowa podstawowe operacje. Liczby rzeczywiste stałoprzecinkowe. Zapis 8.8 oznacza 8 bitów części całkowitej (w tym bit znaku) i 8 bitów części ułamkowej - PowerPoint PPT Presentation

Transcript of Wykład 2:

Page 1: Wykład 2:

Wykład 2:

Liczby rzeczywiste (stało i zmiennoprzecinkowe)

Koprocesorbudowapodstawowe operacje

Page 2: Wykład 2:

Zapis 8.8 oznacza 8 bitów części całkowitej (w tym bit znaku) i 8 bitów części ułamkowej

Tabela 1a. Wartości (wagi) bitów w zapisie binarnym liczb rzeczywistych stałoprzecinkowych ( słowo 16 bitowe, zapis 8.8 ) - zakres: -128.00000000 ... +127.99609375

Liczby rzeczywiste

stałoprzecinkowe

numer bitu

7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -8

wartość +1/ -1

26 25 24 23 22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8

j.w. bit znaku

64 32 16 8 4 2 1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256

Page 3: Wykład 2:

Przykład 1 (zapis 8.8)

Nr 7654 3210 1234 5678liczba 0001 0010 1010 0001b reprezentuje wartość

1*24 + 1*21 + 1*2-1 + 1*2-3 + 1*2-8 = 16 + 2 + 1/2 + 1/8 + 1/256= 18.62890625

Liczby rzeczywiste stałoprzecinkowe

Page 4: Wykład 2:

Zapis 1.15 oznacza 0 bitów części całkowitej (1 bit znaku) i 15 bitów części ułamkowej

Tabela 1b. Wartości (wagi) bitów w zapisie binarnym liczb rzeczywistych stałoprzecinkowych (słowo 16 bitowe, zapis 1.15 ) - zakres: -1.0000000000 ...+0.999969482421875

Liczby rzeczywiste stałoprzecinkowe

numer bitu

0 -1 -2 -3 -4 -5 -6 -7 -8 -9 ... -15

wartość +1/ -1

2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-15

j.w. bit znaku

1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 1/512 1/32768

Page 5: Wykład 2:

Przykład 2 (zapis 1.15)

Nr Z123 4567 89...liczba 0001 0010 1010 0001b reprezentuje wartość

1*2-3 + 1*2-6 + 1*2-8 + 1*2-10 + 1*2-15 = 1/8 + 1/64 + 1/256 + 1/1024 + 1/32768= 0.145538330078125

Liczby rzeczywiste stałoprzecinkowe

Page 6: Wykład 2:

Rozdzielczość zapisu stałoprzecinkowego 1.15

1/215 = 1/( 32 768 ) = 0.000030517578125

Rozdzielczość zapisu stałoprzecinkowego 1.23 1/223 = 1/( 8 388 608 )=

= 0.00000011920928955078125

Rozdzielczość zapisu stałoprzecinkowego 1.31 1/231 = 1/( 2 147 483 648 )=

= 0.0000000004656612873077392578125

Rozdzielczość zapisu stałoprzecinkowego 1.7 1/27 = 1/128 =

= 0.0078125 (-1..+1)

Liczby rzeczywiste stałoprzecinkowe

Page 7: Wykład 2:

Co oznacza zapis?

3.0517578125e-5

=3.0517578125*10-5

=3.0517578125/100000

=0.000030517578125

Liczby rzeczywiste

zmiennoprzecinkowe

Page 8: Wykład 2:

Zapis zmiennoprzecinkowy: single (32 bity)

Liczby rzeczywiste

zmiennoprzecinkowe

wartość = (-1)znak * mantysa * 2 wykładnik

wartość = (-1)znak * 1.xxxxx * 2 wykładnik

znak = 0/1mantysa = 1.0...1.99999988079071044921875wykładnik = 0...255 (-126..+127: offset=127)

31 30...23 22...0

znak wykładnik mantysa

Page 9: Wykład 2:

Przykład 1:

liczba rzeczywista 1.0

= 1. 0 * 20

znak = 0 , wykładnik = 0 , mantysa = 1.0 | |0 011 1111 1 | 000 0000 0000 0000 0000 0000

= 0|011 1111 1|000 0000 0000 0000 0000 0000

= 3F80 0000h

Liczby rzeczywiste zmiennoprzecinkowe

Page 10: Wykład 2:

Przykład 2:

liczba rzeczywista 178.125

= 1011 0010 . 001= 1. 0110 0100 01 * 27

znak = 0 , wykładnik= +7, mantysa = (1).0110 0100 01(=127+7=134)

| | 0 1000 0110 | 0110 0100 0100 0000 0000 0000

= 0100 0011 0011 0010 0010 0000 0000 0000b

= 43 32 20 00h

Liczby rzeczywiste zmiennoprzecinkowe

Page 11: Wykład 2:

Liczby rzeczywiste zmiennoprzecinkowe - zestawienie:

Rys. 1

Page 12: Wykład 2:

Liczby rzeczywiste zmiennoprzecinkowe - zestawienie:

Rozdzielczość i zakres:

single (32 bity): rozdzielczość:

~7 cyfr znaczących zakres: 2–126 ... 2127 ~= 10-38 ... 1038

double (64 bity): rozdzielczość:

~16 cyfr znaczących zakres: 2–1022 ... 21023 ~= 10-308 ... 10308

extended (80 bitów): rozdzielczość:

~19 cyfr znaczących zakres: 2–16382 ... 216383 ~= 10-4932 ... 104933

Page 13: Wykład 2:

Liczby rzeczywiste zmiennoprzecinkowe - wartości specjalne:

quiet NaNs (QNaNs)

signaling NaNs (SNaNs)

Page 14: Wykład 2:

Budowa koprocesora

Rys.2 Rejestry koprocesora

Page 15: Wykład 2:

Budowa koprocesora

Rys.3 Stos rejestrów koprocesora

FLD value1

FLD value2

FLD value3

Page 16: Wykład 2:

Operacje na stosie koprocesora

FINCSTP

FDECSTP

FFREE ST(1)

FINCSTP

FXCH ST(2)

FINIT

Page 17: Wykład 2:

Koprocesor - podstawowe działania

Rys.4 Przykład operacji na koprocesorze

wynik = (5.6* 2.4) + (3.8*10.3)

FLD value1 // a value1=5.6 FMUL value2 // b value2=2.4 FLD value3 FMUL value4 // c value3=3.8 FADD ST,ST(1) //d value4=10.3

FST wynik // wynik=52.58 lub FSTP wynik

Page 18: Wykład 2:

Pozostałe rozkazy

Rys.5 Zdefiniowane stałe koprocesora

Rys.6 Instrukcje trygonometryczne koprocesora

Page 19: Wykład 2:

Budowa koprocesora

Rys.7 Słowo stanu koprocesora (FPU Status Word)C0 == Carry FlagC3 == Zero Flag

(C0,C3 – ustawiane po instrukcjach testujących lub porównujących, np. FTST)

Page 20: Wykład 2:

Budowa koprocesora

Rys.8 Słowo kontroli koprocesora (FPU Control Word)