Wykad 2 Liczby rzeczywiste stao i zmiennoprzecinkowe Koprocesor
Wykład 2: ØLiczby rzeczywiste (stało i zmiennoprzecinkowe) ØKoprocesor Øbudowa Øpodstawowe operacje 1
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 Tabela 1 a. Wartości (wagi) bitów w zapisie binarnym liczb rzeczywistych stałoprzecinkowych ( słowo 16 bitowe, zapis 8. 8 ) - zakres: -128. 0000. . . +127. 99609375 2
Liczby rzeczywiste stałoprzecinkowe Przykład 1 (zapis 8. 8) Nr 7654 3210 1234 5678 liczba 0001 0010 1010 0001 b reprezentuje wartość 1*24 + 1*21 + 1*2 -3 + 1*2 -8 = 16 + 2 + 1/8 + 1/256 = 18. 62890625 3
Liczby rzeczywiste stałoprzecinkowe Zapis 1. 15 oznacza 0 bitów części całkowitej (1 bit znaku) i 15 bitów części ułamkowej Tabela 1 b. Wartości (wagi) bitów w zapisie binarnym liczb rzeczywistych stałoprzecinkowych (słowo 16 bitowe, zapis 1. 15 ) - zakres: -1. 00000. . . +0. 999969482421875 4
Liczby rzeczywiste stałoprzecinkowe Przykład 2 (zapis 1. 15) Nr Z 123 4567 89. . . liczba 0001 0010 1010 0001 b 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 5
Liczby rzeczywiste stałoprzecinkowe 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. 000004656612873077392578125 Rozdzielczość zapisu stałoprzecinkowego 1. 7 1/27 = 1/128 = = 0. 0078125 (-1. . +1) 6
Liczby rzeczywiste zmiennoprzecinkowe Co oznacza zapis? 3. 0517578125 e-5 = 3. 0517578125*10 -5 = 3. 0517578125/100000 = 0. 000030517578125 7
Liczby rzeczywiste zmiennoprzecinkowe Zapis zmiennoprzecinkowy: 31 znak 30. . . 23 wykładnik single (32 bity) 22. . . 0 mantysa wartość = (-1)znak * mantysa * 2 wykładnik wartość = (-1)znak * 1. xxxxx * 2 wykładnik znak = 0/1 mantysa = 1. 0. . . 1. 99999988079071044921875 wykładnik = 0. . . 255 (-126. . +127: offset=127) 8
Liczby rzeczywiste zmiennoprzecinkowe Przykład 1: liczba rzeczywista 1. 0 = 1. 0 * 20 znak = 0 , wykładnik = 0 , mantysa = 1. 0 | | 0 011 1111 1 | 0000 0000 = 0|011 1111 1|000 0000 0000 = 3 F 80 0000 h 9
Liczby rzeczywiste zmiennoprzecinkowe 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 0000 = 0100 0011 0010 0000 b = 43 32 20 00 h 10
Liczby rzeczywiste zmiennoprzecinkowe zestawienie: Rys. 1 11
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 ~= extended (80 bitów): rozdzielczość: ~19 cyfr znaczących zakres: 2– 16382. . . 216383 ~= 10 -308. . . 10308 10 -4932. . . 104933 12
Liczby rzeczywiste zmiennoprzecinkowe wartości specjalne: quiet Na. Ns (QNa. Ns) signaling Na. Ns (SNa. Ns) 13
Budowa koprocesora Rys. 2 Rejestry koprocesora 14
Budowa koprocesora Rys. 3 Stos rejestrów koprocesora FLD value 1 FLD value 2 FLD value 3 15
Operacje na stosie koprocesora FINCSTP FDECSTP FFREE ST(1) FINCSTP FXCH ST(2) FINIT 16
Koprocesor - podstawowe działania wynik = (5. 6* 2. 4) + (3. 8*10. 3) FLD value 1 FMUL value 2 FLD value 3 FMUL value 4 FADD ST, ST(1) FST wynik // a // b value 1=5. 6 value 2=2. 4 // c //d // value 3=3. 8 value 4=10. 3 wynik=52. 58 Rys. 4 Przykład operacji na koprocesorze lub FSTP wynik 17
Pozostałe rozkazy Rys. 5 Zdefiniowane stałe koprocesora Rys. 6 Instrukcje trygonometryczne koprocesora 18
Budowa koprocesora Rys. 7 Słowo stanu koprocesora (FPU Status Word) C 0 == Carry Flag C 3 == Zero Flag (C 0, C 3 – ustawiane po instrukcjach testujących lub porównujących, np. FTST) 19
Budowa koprocesora Rys. 8 Słowo kontroli koprocesora (FPU Control Word) 20
- Slides: 20