Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Organizacja i Architektura
Komputerów
1
Arytmetyka komputerów
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Alfabet: 0, 1
Dane w komputerach s
ą
reprezentowane wył
ą
cznie przy
u
ż
yciu alfabetu dwójkowego (binarnego)
2
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Bity, bajty, słowa
Bity s
ą
grupowane w wi
ę
ksze zespoły o długo
ś
ci
b
ę
d
ą
cej pot
ę
g
ą
liczby 2:
–
tetrada
: 4 bity (
nibble
)
–
bajt
: 8 bitów
3
–
bajt
: 8 bitów
–
słowo
: 16, 32, 64 lub 128 bitów
–
podwójne słowo
(
doubleword
)
–
półsłowo
(
halfword
)
Długo
ść
słowa zale
ż
y od
organizacji
komputera
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kody liczbowe
2
2
3
3
4
4
5
5
6
6
7
7
10100111100
10100111100
1211122
1211122
110330
110330
20330
20330
10112
10112
3623
3623
z
a
(
ra
d
ix
)
z
a
(
ra
d
ix
)
dwójkowy (binarny)
dwójkowy (binarny)
Podstawy używane w
systemach cyfrowych
4
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
3623
3623
2474
2474
1748
1748
1340
1340
1009
1009
938
938
7C1
7C1
6BA
6BA
5E5
5E5
53C
53C
bb
aa
z
a
(
ra
d
ix
)
z
a
(
ra
d
ix
)
o
ok
ktal
talny
ny
dziesi
dziesię
ętny
tny
szesnastkowy, heksadecymalny,
szesnastkowy, heksadecymalny,
‘hex’
‘hex’
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kod szesnastkowy HEX
Powszechnie
u
ż
ywany przez
programistów
programuj
ą
cych w
j
ę
zyku asemblera
Cyfra HEX
kod binarny
0
0000
1
0001
2
0010
3
0011
4
0100
5
Skraca długo
ść
notacji liczby
Łatwa konwersja na
kod NKB i odwrotnie
Ka
ż
da tetrada
reprezentuje cyfr
ę
szesnastkow
ą
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
A
1010
B
1011
C
1100
D
1101
E
1110
F
1111
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Konwersja HEX – radix 10
6
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Konwersja binarna – HEX
7
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kod BCD
BCD (
binary coded decimal
)
–
ka
ż
da cyfra dziesi
ę
tna jest
reprezentowana jako 4 bity
–
kod opracowany dla
wczesnych kalkulatorów
cyfra
dziesi
ę
tna BCD
0 0000
1 0001
2
0010
3
0011
4
0100
8
wczesnych kalkulatorów
–
przykład: 359
10
=
= 0011 0101 1001
bcd
–
kod łatwy do zrozumienia
przez człowieka, niewygodny
dla komputerów
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001
Kody od 1010 do 1111
nie s
ą
u
ż
ywane
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Porz
ą
dek bajtów w pami
ę
ci
Problem
–
Pami
ęć
jest zwykle adresowana bajtami
–
Jak zapisa
ć
w pami
ę
ci słowo 32-bitowe ?
8 bit
8 bitów
ów
9
0x13579BDF
0x13579BDF
s
s
łł
owo 32
owo 32--
bitowe
bitowe
w kodzie HEX
w kodzie HEX
a
d
a
d
re
s
y
re
s
y
1248
1248
1249
1249
1250
1250
1251
1251
...
...
...
...
??
8 bit
8 bitów
ów
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kolejno
ść
bajtów w pami
ę
ci
Rozwi
ą
zanie
–
podziel słowo na bajty
–
zapisz kolejne bajty w kolejnych komórkach
8 bitów
10
0x13579BCF
0x13579BCF
każda cyfra
HEX
reprezentuje
tertadę, zatem
dwie cyfry
tworzą bajt
a
d
a
d
re
s
y
re
s
y
1248
1249
1250
1251
...
...
...
...
1 bajt tutaj
następny
bajt tutaj
kolejny bajt
tutaj
ostatni bajt
tutaj
8 bitów
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kolejno
ść
bajtów
cd.
W jakiej kolejno
ś
ci zapisywa
ć
bajty?
–
Zaczynaj
ą
c od najbardziej znacz
ą
cego (“
big
”
end
)?
...
...
0x13
0x13
11
a
d
re
s
y
1248
1249
1250
1251
...
...
0x13579BDF
0x13579BDF
0x13
0x13
0x57
0x57
0x9B
0x9B
0xDF
0xDF
kierunek
kierunek
analizy
analizy
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kolejno
ść
bajtów
cd.
W jakiej kolejno
ś
ci zapisywa
ć
bajty?
–
Zaczynaj
ą
c od najmniej znacz
ą
cego (“
little
”
end
)?
...
...
0xDF
0xDF
12
aa
d
re
s
y
d
re
s
y
1248
1249
1250
1251
...
...
0x13579BDF
0x13579BDF
0x13
0x13
0x57
0x57
0x9B
0x9B
0xDF
0xDF
kierunek
kierunek
analizy
analizy
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kolejno
ść
bajtów
cd.
Stosuje si
ę
dwa sposoby zapisu słów w pami
ę
ci
Big Endian
–
most significant byte
in
lowest address
–
store least significant byte in highest address
13
–
store least significant byte in highest address
Little Endian
–
store
least significant byte
in
lowest address
–
store most significant byte in highest address
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kolejno
ść
bajtów
cd.
Wybór wersji kolejno
ś
ci zapisu bajtów zale
ż
y od
konstruktorów procesora
–
Big Endian
Motorola 680x0 (Amiga/Atari ST/Mac)
IBM/Motorola PowerPC (Macintosh)
14
IBM/Motorola PowerPC (Macintosh)
MIPS (SGI Indy/Nintendo 64)
Motorola 6800
–
Little Endian
Intel 80x86/Pentium (IBM PC)
Rockwell 6502 (Commodore 64)
MIPS (Sony Playstation/Digital DECstation)
–
Niektóre procesory (np. MIPS) mo
ż
na konfigurowa
ć
zarówno w
trybie Big Endian jak i Little Endian
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
ALU
Jednostka arytmetyczno-logiczna (
ALU – arithmetic-logic unit
)
wykonuje operacje arytmetyczne na liczbach w kodzie dwójkowym
ALU jest centralnym blokiem komputera; wszystkie inne bloki
funkcjonalne słu
żą
do wła
ś
ciwej obsługi ALU
Proste ALU wykonuje operacje na liczbach całkowitych (
integer
)
15
Proste ALU wykonuje operacje na liczbach całkowitych (
integer
)
Bardziej zło
ż
one ALU mo
ż
e wykonywa
ć
operacje
zmiennoprzecinkowe FP na liczbach rzeczywistych
Najcz
ęś
ciej ALU_INT i ALU_FP (
FPU – Floating Point Unit
) s
ą
wykonane jako dwa osobne bloki cyfrowe
–
FPU mo
ż
e by
ć
wykonane jako osobny układ scalony (koprocesor)
–
FPU mo
ż
e by
ć
wbudowane do procesora
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
ALU – wej
ś
cia i wyj
ś
cia
16
• CU – układ sterowania (Control Unit)
• Registers – rejestry wbudowane do CPU
• Flags – wska
ź
niki, znaczniki stanu, flagi, warunki: zespół wska
ź
ników
bitowych okre
ś
laj
ą
cych specyficzne wła
ś
ciwo
ś
ci wyniku operacji
(zero, znak, przeniesienie itp.)
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
ALU – symbol logiczny
Kod operacji pochodzi z
układu sterowania (CU)
Liczba bitów wyniku jest
taka sama jak liczba bitów
argumentów (operandów)
– w tym przykładzie
operacja
a
17
– w tym przykładzie
wynosi 32
ALU nie tylko generuje bity
wska
ź
ników, ale tak
ż
e
uwzgl
ę
dnia poprzedni stan
wska
ź
ników
32
32
32
wynik
operacji
a
b
ALU
wska
ź
niki
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Wieloznaczno
ść
informacji
Co oznacza poni
ż
szy zapis?
10010111
• Liczb
ę
całkowit
ą
bez znaku: 151
18
• Liczb
ę
całkowit
ą
bez znaku: 151
• Liczb
ę
całkowit
ą
w kodzie znak-moduł: - 23
• Liczb
ę
całkowit
ą
w kodzie uzupełnie
ń
do dwóch: - 105
• Znak w rozszerzonym kodzie ASCII (IBM Latin 2):
Ś
• Kod operacji procesora x86:
XCHG AX,DI
To zale
ż
y od kontekstu
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Liczby całkowite bez znaku
u
ż
ywane s
ą
tylko cyfry 0 i 1
{ }
∑
−
−
−
=
∈
=
1
0
1
2
1
2
1
,
0
.
.
.
n
i
i
i
n
n
a
A
a
a
a
a
a
A
19
∑
=
=
0
2
i
i
a
A
kod ten bywa nazywany NKB
(naturalny kod binarny)
zakres reprezentacji liczb dla
słowa n-bitowego wynosi:
<0, 2
n – 1
>
dla n = 8: <0, 255>
dla n = 16: <0, 65 535>
Przykłady:
00000000 = 0
00000001 = 1
00101001 = 41
10000000 = 128
11111111 = 255
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kod znak-moduł (ZM)
Najbardziej znacz
ą
cy bit
oznacza znak
0 oznacza liczb
ę
dodatni
ą
1 oznacza liczb
ę
ujemn
ą
Przykład
+18 = 00010010
=
−
=
=
∑
∑
−
−
=
−
2
2
0
1
1
2
0
2
n
i
n
i
n
i
i
a
gdy
a
a
gdy
a
A
20
+18 = 00010010
−
18 = 10010010
Problemy
Układy arytmetyczne musz
ą
osobno rozpatrywa
ć
bit znaku
i moduł
Wyst
ę
puj
ą
dwie reprezentacje
zera:
+0 = 00000000
−
0 = 10000000
=
−
∑
=
−
0
1
1
2
i
n
i
i
a
gdy
a
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kod uzupełnie
ń
do 2 (U2)
Najbardziej znacz
ą
cy bit
oznacza znak liczby
0 – liczba dodatnia
1 – liczba ujemna
Tylko jedna reprezentacja
Przykłady:
+3 = 00000011
+2 = 00000010
21
Tylko jedna reprezentacja
zera:
+0 = 00000000
Ogólna posta
ć
U2:
∑
−
=
−
−
+
−
=
2
0
1
1
2
2
n
i
i
i
n
n
a
a
A
+2 = 00000010
+1 = 00000001
+0 = 00000000
-1 = 11111111
-2 = 11111110
-3 = 11111101
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Konwersja NKB – U2
liczba
binarna
ujemna
22
liczba
U2
dodatnia
uzupełnienie
0 1
1 0
+1
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Zalety kodu U2
Jedna reprezentacja zera
Układy arytmetyczne (ALU) maj
ą
prostsz
ą
budow
ę
(wyka
ż
emy to pó
ź
niej)
Negacja (zmiana znaku liczby) jest bardzo prosta:
23
Negacja (zmiana znaku liczby) jest bardzo prosta:
3 = 00000011
uzupełnienie do 1(negacja boolowska)
11111100
dodanie 1
11111101
−
3 = 11111101
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Kod U2 – ilustracja geometryczna
24
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Wada kodu U2
Zakres reprezentowanych liczb jest niesymetryczny
najmniejsza liczba:
−
2
n
−
1
(minint)
najwi
ę
ksza liczba: 2
n
−
1
−
1 (maxint)
dla n=8
25
dla n=8
najmniejsza liczba:
−
128
najwi
ę
ksza liczba: +127
dla n=16
najmniejsza liczba:
−
32 768
najwi
ę
ksza liczba: +32 767
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Negacja w U2 – przypadki specjalne
0 =
00000000
negacja bitowa
11111111
dodaj 1 do LSB
+1
wynik
1 00000000
przepełnienie jest ignorowane
26
przepełnienie jest ignorowane
wi
ę
c
−0 = 0
√√√√
− 128 =
10000000
negacja bitowa
01111111
dodaj 1 do LSB
+1
wynik
10000000
Wi
ę
c −(− 128) = − 128
X
Wniosek:
nale
ż
y sprawdza
ć
bit znaku
po negacji
(powinien si
ę
zmieni
ć
)
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Konwersja długo
ś
ci słowa w U2
Liczby dodatnie uzupełnia si
ę
wiod
ą
cymi zerami
+18 =
00010010
+18 = 00000000 00010010
27
Liczby ujemne uzupełnia si
ę
wiod
ą
cymi jedynkami
−
18 =
10010010
−
18 = 11111111 10010010
Ogólnie bior
ą
c, powiela si
ę
bit MSB (bit znaku)
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Dodawanie i odejmowanie w U2
Obydwie operacje wykonuje si
ę
u
ż
ywaj
ą
c zwykłego
dodawania liczb dwójkowych
Nale
ż
y sprawdza
ć
bit znaku, aby wykry
ć
nadmiar
(overflow)
28
Odejmowanie wykonuje si
ę
przez negowanie odjemnej i
dodawanie:
a −b = a + (− b)
Do realizacji dodawania i odejmowania potrzebny jest
zatem tylko
układ negacji bitowej i sumator
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Układ dodawania i odejmowania U2
29
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Mno
ż
enie
Mno
ż
enie liczb dwójkowych jest znacznie
bardziej zło
ż
one od dodawania i odejmowania
Podstawowy algorytm jest taki sam jak przy
pi
ś
miennym mno
ż
eniu liczb:
30
pi
ś
miennym mno
ż
eniu liczb:
–
okre
ś
la si
ę
iloczyny cz
ą
stkowe dla ka
ż
dej cyfry
mno
ż
nika
–
kolejne iloczyny cz
ą
stkowe nale
ż
y umieszcza
ć
z
przesuni
ę
ciem o jedn
ą
pozycj
ę
(kolumn
ę
) w lewo
–
nale
ż
y doda
ć
do siebie iloczyny cz
ą
stkowe
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Przykład mno
ż
enia
(liczby bez znaku)
1011
mno
ż
na (11 w kodzie dziesi
ę
tnym)
x 1101
mno
ż
nik (13 w kodzie dziesi
ę
tnym)
1011
iloczyny cz
ą
stkowe
0000
Uwaga: je
ś
li bit mno
ż
nika jest równy 1,
1011
iloczyn cz
ą
stkowy jest równy mno
ż
nej,
31
1011
iloczyn cz
ą
stkowy jest równy mno
ż
nej,
1011
w przeciwnym przypadku jest równy 0
10001111
wynik mno
ż
enia (143 w kodzie dziesi
ę
tnym)
Uwaga #1:
wynik ma podwójn
ą
długo
ść
; potrzebujemy słowa
o podwójnej precyzji
Uwaga #2:
powy
ż
szy algorytm funkcjonuje tylko dla liczb bez
znaku; je
ś
li przyj
ąć
kod U2 mno
ż
na = − 5,
mno
ż
nik = − 3, natomiast iloraz wynosiłby − 113,
co oczywi
ś
cie jest nieprawd
ą
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Układ mno
ż
enia liczb bez znaku
32
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Przykład mno
ż
enia liczb bez znaku
33
wynik mno
ż
enia
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Mno
ż
enie liczb bez znaku
cd.
34
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Mno
ż
enie liczb ze znakiem
Prosty algorytm podany wcze
ś
niej nie działa
Rozwi
ą
zanie 1
–
zamieni
ć
czynniki ujemne na dodatnie
–
pomno
ż
y
ć
liczby korzystaj
ą
c z podanego wcze
ś
niej
35
–
pomno
ż
y
ć
liczby korzystaj
ą
c z podanego wcze
ś
niej
algorytmu
–
je
ś
li znaki czynników (przed wykonaniem negacji)
były ró
ż
ne, zanegowa
ć
iloczyn
Rozwi
ą
zanie 2
–
algorytm Booth’sa
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Algorytm Booth’sa
Q-1
dodatkowy bit
(przerzutnik) pami
ę
taj
ą
cy
najmniej znacz
ą
cy bit
rejestru Q opuszczaj
ą
cy ten
rejestr przy przesuni
ę
ciu w
prawo
36
prawo
Przesuni
ę
cie arytmetyczne w
prawo
– przesuni
ę
cie z
powieleniem bitu znaku
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Przykład działania metody Booth’sa
37
iloczyn: 3 x 7 = 21 testowane bity: 10 A:=A
-
M
01 A:=A+M
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Algorytm Booth’sa
(znak dowolny)
38
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Dzielenie
Dzielenie liczb dwójkowych jest znacznie bardziej skomplikowane
od mno
ż
enia
Liczby ujemne sprawiaj
ą
spore kłopoty (Stallings, s. 341
-
342)
Podstawowy algorytm podobny do dzielenia liczb na papierze:
kolejne operacje przesuwania, dodawania lub odejmowania
Przykład: dzielenie liczb bez znaku:
Iloraz
39
001111
1011
00001101
10010011
1011
001110
1011
1011
100
Iloraz
(Quotient)
Dzielna
(Dividend)
Reszta
(Remainder)
Reszty
cz
ą
stkowe
(Partial
Remainders)
Dzielnik
(Divisor)
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Liczby rzeczywiste
Liczby z cz
ęś
ci
ą
ułamkow
ą
Mo
ż
na je zapisa
ć
korzystaj
ą
c z kodu NKB i dodatkowo
znaków ‘
-
’ oraz ‘.’
1001.1010 = 2
4
+ 2
0
+2
-1
+ 2
-3
=9.625
40
1001.1010 = 2 + 2 +2 + 2 =9.625
Problem: gdzie znajduje si
ę
kropka dziesi
ę
tna?
W stałym miejscu?
–
rozwi
ą
zanie niedobre z punktu widzenia metod numerycznych
Na zmiennej pozycji?
–
jak poda
ć
informacj
ę
o miejscu poło
ż
enia kropki?
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Liczby zmiennoprzecinkowe (FP)
b
it
zn
a
k
u
przesuni
ę
ty
wykładnik
(exponent)
mantysa (significand or mantissa)
41
Warto
ść
liczby: +/
-
1. mantysa x 2
wykładnik
Podstawa 2 jest ustalona i nie musi by
ć
przechowywana
Poło
ż
eniu punktu dziesi
ę
tnego jest ustalone: na lewo od
najbardziej znacz
ą
cego bitu mantysy
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
FP – mantysa
Mantysa jest zapisana w kodzie U2
Wykładnik jest zapisany z przesuni
ę
ciem (excess or
biased notation)
42
–
np. przesuni
ę
cie równe 127 oznacza:
–
8-bitowe pole wykładnika
–
zakres liczb 0-255
–
od przesuni
ę
tego wykładnika nale
ż
y odj
ąć
127 aby otrzyma
ć
prawdziw
ą
warto
ść
–
zakres warto
ś
ci wykładnika -127 to +128
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
FP – normalizacja
Liczby FP s
ą
zwykle normalizowane, tzn. wykładnik jest
tak dobierany, aby najbardziej znacz
ą
cy bit (MSB)
mantysy był równy 1
Poniewa
ż
bit ten jest zawsze równy 1, nie musi by
ć
przechowywany. Dlatego 23-bitowe pole mantysy w
43
przechowywany. Dlatego 23-bitowe pole mantysy w
rzeczywisto
ś
ci odpowiada mantysie 24-bitowej, z cyfr
ą
1
na najbardziej znacz
ą
cej pozycji (mantysa mie
ś
ci si
ę
zatem w przedziale od 1 do 2
Uwaga:
w notacji naukowej FP (Scientific notation) liczby
s
ą
normalizowane inaczej, tak aby mantysa miała jedn
ą
znacz
ą
c
ą
cyfr
ę
przed kropk
ą
dziesi
ę
tn
ą
,
np. 3.123 x 10
3
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
FP – przykład
44
pozycje mantysy
uzupełniane s
ą
zerami
1,1010001 x 210100 = 0 10010011 10100010000000000000000
- 1,1010001 x 210100 = 1 10010011 10100010000000000000000
1,1010001 x 2-10100 = 0 01101011 10100010000000000000000
- 1,1010001 x 2-10100 = 1 01101011 10100010000000000000000
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Zakres reprezentacji liczb FP
Dla formatu 32-bitowego
8-bitowy wykładnik
+/
-
2
256
≈
1.5 x 10
77
45
Dokładno
ść
–
efekt nierównomiernego pokrycia osi liczb
rzeczywistych (zmienna warto
ść
LSB mantysy)
–
23-bitowa mantysa: 2
-23
≈
1.2 x 10
-
7
–
około 6 pozycji dziesi
ę
tnych
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Zakresy liczb FP i U2
(format 32-bitowy)
46
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Standard IEEE 754
Dwa warianty: 32- i 64-bitowy format liczb
8- lub 11-bitowy wykładnik (bias = 127 lub 1023)
IEEE 754 dopuszcza ponadto tzw. formaty rozszerzone (extended
formats) dla oblicze
ń
po
ś
rednich w systemach cyfrowych
47
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
ANSI/IEEE Standard Floating-Point Format (IEEE 754)
Short (32-bit) format
8 bits,
bias = 127,
–
126 to 127
23 bits for fractional part
(plus hidden 1 in integer part)
Short exponent range is –127 to 128
but the two extreme values
are reserved for special operands
(similarly for the long format)
Revision (IEEE 754R) is being considered by a committee
48
The two ANSI/IEEE standard floating-point formats.
Long (64-bit) format
Sign Exponent
Significand
11 bits,
bias = 1023,
–
1022 to 1023
52 bits for fractional part
(plus hidden 1 in integer part)
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Standard IEEE 754
W rzeczywisto
ś
ci standard IEEE 754 jest
bardziej skomplikowany:
–
dodatkowe dwa bity: guard i round
cztery warianty zaokr
ą
glania
49
–
cztery warianty zaokr
ą
glania
–
liczba dodatnia podzielona przez 0 daje
niesko
ń
czono
ść
–
niesko
ń
czono
ść
dzielona przez niesko
ń
czono
ść
daje
NaN (not a number)
–
niektóre procesory nie s
ą
w pełni zgodne z IEEE
754, skutki s
ą
na ogół niedobre (Pentium bug)
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Some features of ANSI/IEEE standard floating-point formats
Feature
Single/Short
Double/Long
Word width in bits
32
64
Significand in bits
23 + 1 hidden
52 + 1 hidden
Significand range
[1, 2 – 2
–23
]
[1, 2 – 2
–52
]
Exponent bits
8
11
Exponent bias
127
1023
Zero (
±
0)
e + bias = 0, f = 0
e + bias = 0, f = 0
50
Denormal
e + bias = 0, f
≠
0
represents
±
0.f
×
2
–126
e + bias = 0, f
≠
0
represents
±
0.f
×
2
–1022
Infinity (
±
∞
)
e + bias = 255, f = 0
e + bias = 2047, f = 0
Not-a-number (NaN)
e + bias = 255, f
≠
0
e + bias = 2047, f
≠
0
Ordinary number
e + bias
∈
[1, 254]
e
∈
[–126, 127]
represents 1.f
×
2
e
e + bias
∈
[1, 2046]
e
∈
[–1022, 1023]
represents 1.f
×
2
e
min
2
–126
≅
1.2
×
10
–38
2
–1022
≅
2.2
×
10
–308
max
≅
2
128
≅
3.4
×
10
38
≅
2
1024
≅
1.8
×
10
308
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Arytmetyka FP +/
-
W arytmetyce FP dodawanie i odejmowanie s
ą
bardziej zło
ż
onymi operacjami ni
ż
mno
ż
enie i
dzielenie (powodem jest konieczno
ść
tzw.
wyrównywania składników)
51
Etapy dodawania i odejmowania
–
Sprawdzenie zer
–
Wyrównanie mantys (i korekcja wykładników)
–
Dodawanie lub odj
ę
cie mantys
–
Normalizowanie wyniku
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Arytmetyka FP x /
÷
Etapy mno
ż
enia i dzielenia
–
sprawdzenie zer
–
dodawanie/odejmowanie wykładników
–
mno
ż
enie/dzielenie mantys (uwaga na znak)
52
–
mno
ż
enie/dzielenie mantys (uwaga na znak)
–
normalizacja
–
zaokr
ą
glanie
–
Uwaga:
wszystkie wyniki oblicze
ń
po
ś
rednich
powinny by
ć
wykonywane w podwójnej precyzji
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
53
Mno
ż
enie FP
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
54
Dzielenie FP
Wy
ż
sza Szkoła Informatyki Stosowanej i Zarz
ą
dzania
Podsumowanie
Zapis słów w pami
ę
ci (Endian)
Reprezentacje liczb: NKB, ZM, U2, BCD, HEX
Ogólna charakterystyka ALU
Operacje na liczbach całkowitych bez znaku
55
Operacje na liczbach całkowitych bez znaku
Operacje na liczbach całkowitych ze znakiem
Mno
ż
enie – algorytm Booth’sa
Liczby zmiennoprzecinkowe FP
Formaty liczb FP, IEEE 754
Operacje na liczbach FP