IEEE-754

Transkrypt

IEEE-754
Systemy komputerowe
Standardowa reprezentacja liczb rzeczywistych
komputerowych algorytm liczbie odpowiedniej kombinacji bitów - kodu dwójkowego liczby.
systemów
komputerowych,
obliczenia
!"
#i
$%%%-754. Jest to komputerowy
&
'
zmiennoprzecinkowych.
1. Liczby zmiennoprzecinkowe
! '
(
x = (-1)s
•
Mx
•
2p
# s #' " Mx
) * p &
& + ' ograniczeniom: p mu #' " [L,U] Ne przeznaczonych na zapisanie
& #' Mx ' Nf (lub Nf+1" stosowany jest tzw. „bit ukryty”) zarezerwowanych dla mantysy.
" & # "
' , )
'" * - & ' $
"
&
mantysa Mx . Mx do postaci, dla
& #'( 1 > Mx 0,1; jednak, w
standardzie IEEE-/01" to znormalizowany format mantysy, w
którym 2 > Mx 1 czyli Mx = 1,fffff (symbol f #
&*
2
' "
powstaje problem - ' " '
3
' #' ' )
& # 4 5* 6 " # &" # 4"44545554 1
' 7 " & 4"445 4"444
2 $%%%-/01 '
Podsumujmy:
W standardzie IEEE-/01 rzeczywistych zapisanych jako:
x = (-1)s
•
1,ffff...ff
•
2p
& ) 8 9*: #' & 3 " ,atu,
liczby bitów.
; , &
& 2. Zasady znormalizowanej reprezentacji zmiennoprzecinkowej
+
&"
IEEE-754,
format
zapisu
liczb
e
rzeczywistych:
seeeeeef ffffffff
) 4<* " s" Ne ) <* & e i na koniec Nf bitów (w tym
przyk& =* & #
mantysy.
To, z jakiego zakresu liczby - & )
* - ' & .
#' &# ) , * - $%%% & ,( )7> * )<1 *" jego zdaniem - &# '" niektórzy producenci komputerów doszli do odmiennych wniosków i
& , & & #' & 89 & 544 )bias),
czyli
2
2(Ne-1)
-
1 &
W wyniku tak dobranej polaryzacji kod od # & #' & )444* 6 # "
liczb zdenormalizowanych oraz symboli, którym # )#' 8 9
* ; # & & #
?# '" & & 6 standardem IEEE-/01 ' zapisane jako:
x = (-1)s
•
1,ffff...ff
; •
2(e-bias)
& t równy
polaryzacji:
U = bias
)# 54444 & @ 44445*
a dolny limit
L = -(bias-1)
) & 45545 e = 00...001)
?# , & # & ,A4 2
"
#' & (
2-(Nf+1)
" ' (
1,111...111
#
•
2 U.
2U+1. #' &
(
1,000...000
•
2 L.
'" L zero.
3
3. 32.bitowa, zgodna z IEEE-754, reprezentacja zmiennoprzecinkowa
Dla
32-bitowej
reprezentacji
zmiennoprzecinkowej
(pojedyncza
precyzja) zgodnie ze standardem IEEE-/01 format:
seeeeeee efffffff ffffffff ffffffff.
2 & Ne = 8 bitów a Nf = 23 bity przeznaczono na
& #' & )
# *: )bias)
wynosi 01111111 " 4>/ ; & " '
# ), „nie liczby”),
# & & zakresu [-126,127].
2
>1 )# * " & (
2-24 = 5,96... • 10-8 .
" ' formacie to:
1,11111111111111111111111 • 2127 = 3,402823... • 1038.
" ' (
1,00000000000000000000000 • 2-126 = 1,175494... • 10-38.
!
Po sprowadzeniu do postaci zmiennoprzecinkowej i konwersji mantysy na
" #
1,1011•22.
Znak jest +.
$%$ & $' & !!!!!! ()
* ++ ," + !
010000001101100....0 = 0100 0000 1101 1000 00...00 = 40D80000 (hex)
4
Liczba -!$ #
1,10011001... •2-3.
Znak -.
# !
-
," + # !!
– 11 = 01111100.
!! ( .++/ )
10111110010011001....100 = 1011 1110 0100 1100 .... 1100
0 !
! ! !!
!! ! & 123CCCCD (hex).
2 & # , 7>- #
, <1- " kombinacje bitów & " && &
& & # ?# & 00000000 lub 11111111 " # jest wykorzystywana do
zakodowania zera:
00000000 00000000 00000000 00000000 = 0,0 = 00000000 (hex)
#"
#' - nawet,
# & i zerami to zostaje
jeszcze “ukryta” jedynka.
B AC- #'(
01111111 10000000 00000000 00000000 = + = 7F800000 (hex)
11111111 10000000 00000000 00000000 = - = FF800000 (hex)
# ' elenia przez zero lub
- ) & 7"1•1038* przedstawienia w tym formacie.
& NaN (Not-a-Number czyli „nie
liczb9*
#
&
arytmetycznych:
0 11111111 0111111 1111111111111111 = NaNS = 7FBFFFFF (hex)
0 11111111 1000000 0000000000000000 = NaNQ = 7FC00000 (hex)
5
NaNS przerwaniem. W przypadku NaNQ ! " #$ NaN "
%& '
5. 64-bitowa, zgodna z IEEE-754, reprezentacja zmiennoprzecinkowa
Zgodnie
ze
standardem
"
IEEE-754
64-bitowa
"
reprezentacja
!
format:
seeeeeee eeeeffff ffffffff....ffffffff.
( % Ne = 11 bitów, a Nf ) *+ %" !$,
mantysy.
( "!" exponent % polaryzacja 01111111111 ) .'+/ !
0 " , ! $ , NaN) dwie
"
% "$, % !
1-1022,1023].
( " */ " " 2"3 % ! +-53 = 1,11... • 10-16 .
4 .5 6 ! 7! " " 6"8
1,11111111....11111111111 • 21023 = 1,797693... • 10308.
Najmniejsza dodatnia liczba:
1,00000000....00000000000 • 2-1022 = 2,225074... • 10-308.
6. Arytmetyka zmiennoprzecinkowa
Omówimy
teraz
zasady
wykonywania
na
liczbach
zmiennoprzecinkowych - %& "
DODAWANIE
#9" % ! "
%," , precyzja):
0,25 =
00111110 10000000 00000000 00000000
100 =
01000010 11001000 00000000 00000000
0 , " 8
6
( " " , % %
: " $ % ! " 0 , ! " . ", % . (
"! % !,
4$ , "! !
" 6 " %$
$" % %!
wynik.
-
-
!!! "
!#
"
#
-!!!!!!
--------00001000
(8) miejsc.
!!!!!! " antysy)
"
#
0 01111110 1 " ! #
" $ % #
!!!!!!! ! " )
! ! " & #
!!! ! " ' #
"(
$ % !#
0 10000101 1,10010000000000000000000
+ 0 10000101 0,00000001000000000000000
--------------------------------------0 10000101 1,10010001000000000000000
(100)
(.25)
# " % "
poza „ukryciem” jedynki.
Wynik:
0 10000101 10010001000000000000000
0100 0010 1100 1000 1000 0000 0000 0000 = 42C88000 (hex).
ODEJMOWANIE
( , " 7! " , "
" % 7 ",
7
;74<=7>=
0 " , " " , "
, %
#9" % 6" 66668
0 10000100 01
+ ! !!!! !!
")
* ) (
, , #
-----------------
:
1,0100
"
- % # + !!!
-----00000
00000
10100
10100
10100
---------1000110000
!!!
:
7 "!,
" % ! bias , " $,
polaryzacji.
?" % 8
10000100
+ 00111100
---------11000000
4"" !8
11000000
- 01111111
----------
!!
!
" #
"#
otrzymamy:
1 01000001
10,00110000
4. Normalizujemy wynik:
1 01000001 10,00110000
, .
1 01000010 1,000110000
" $ % /, # .
1010000100001
seeeeeeeeffff
8
DZIELENIE
( "
% , "
",
NADMIAR I NIEDOMIAR
# " " " , % !
" @$ " " "" &$
Niedomiar w reprezentacji zmienn ! "% "% ,
" >" % " miejsce wtedy, kiedy w trakcie normalizacji mantysy pole bitowe
% !
ane. W takim przypadku
standardowo wynik jest kodowany jak zero.
9

Podobne dokumenty