Wykład 2:
description
Transcript of Wykład 2:
Wykład 2:
Liczby rzeczywiste (stało i zmiennoprzecinkowe)
Koprocesorbudowapodstawowe operacje
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
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
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
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
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
Co oznacza zapis?
3.0517578125e-5
=3.0517578125*10-5
=3.0517578125/100000
=0.000030517578125
Liczby rzeczywiste
zmiennoprzecinkowe
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
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
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
Liczby rzeczywiste zmiennoprzecinkowe - zestawienie:
Rys. 1
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
Liczby rzeczywiste zmiennoprzecinkowe - wartości specjalne:
quiet NaNs (QNaNs)
signaling NaNs (SNaNs)
Budowa koprocesora
Rys.2 Rejestry koprocesora
Budowa koprocesora
Rys.3 Stos rejestrów koprocesora
FLD value1
FLD value2
FLD value3
Operacje na stosie koprocesora
FINCSTP
FDECSTP
FFREE ST(1)
FINCSTP
FXCH ST(2)
FINIT
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
Pozostałe rozkazy
Rys.5 Zdefiniowane stałe koprocesora
Rys.6 Instrukcje trygonometryczne koprocesora
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)
Budowa koprocesora
Rys.8 Słowo kontroli koprocesora (FPU Control Word)