Struktura a architektura počítačů
Číselné soustavy Převody mezi soustavami, kódy Aritmetické operace
České vysoké učení technické Fakulta elektrotechnická Ver.1.20
J. Zděnek 2013
Polyadické číselné soustavy (poziční) •
z
Hodnota čísla v soustavě se základem
xz =
n
n
−m
−m
i a . z = ∑ a i . vi i ∑
x z = an vn + an −1vn −1 + ..... + a1v1 + a0 v0 + a−1v−1 + a− 2 v− 2 + ..... + a− m v− m • • •
z ai vi
i • n • −m •
- hodnota číslice
z∈N , z ≥ 2 ai ∈ N , 0 ≤ ai < z
- váha řádového místa
vi = z i
- základ číselné soustavy,
- řádové místo (pozice) - nejvyšší řád s nenulovou číslicí - nejnižší řád s nenulovou číslicí
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
2
Polyadické číselné soustavy (poziční) •
Hodnota čísla v soustavě se základem
xz =
n
z n
∑ a . z = ∑ a .v i
i
i
−m
−m
i
x z = an vn + an −1vn −1 + ..... + a1v1 + a0 v0 + a−1v−1 + a− 2 v− 2 + ..... + a− m v− m •
Zápis čísla v soustavě se základem
z
x z = (an an −1..... a1 a0 , a−1 a− 2 ..... + a− m ) z Celá část
Zlomková část Řádová čárka
x = an an −1..... a1 a0 , a−1 a− 2 ..... + a− m A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
3
Používané číselné soustavy •
Číselné soustavy používané ve výpočetní technice • Dvojková (Binary) • Základ soustavy • Číslice
z=2 ai = (0, 1)
• Desítková (Decimal) • Základ soustavy • Číslice
z = 10 ai = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
• Šestnáctková (Hexadecimal) • Základ soustavy z = 16 • Číslice ai = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) (Pozn. Hodnota A=10, B=11, … F=15)
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
4
Váhy řádových míst z = 10
z = 16
z=2
i
vi = zi
i
vi = zi
i
vi = zi
…
…
…
…
…
…
3
1000
3
8
3
4096
2
100
2
4
2
256
1
10
1
2
1
16
0
1
0
1
0
1
-1
0,1
-1
0,5
-1
0,0625
-2
0,01
-2
0,25
-2
0,0039..
-3
0,001
-3
0,125
-3
…
…
…
…
…
…
…
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
5
Dvojková soustava (Binary Number System) x=
n
n
∑ a .2 = ∑ a .v i
i
−m
i
−m
i
• Základ soustavy • Číslice soustavy
z=2 ai = (0, 1)
• Váha řádového místa
vi = 2i
• Zápis čísla nebo nebo nebo
101101,0112 101101,011b 101101,011b 101101,011 (pokud je zřejmý základ z kontextu)
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
6
Dvojková soustava – důležité váhy vi = 2i xd
1T
4G
1G
1M
524288
262144
131072
65536
2i
240
232
230
220
219
218
217
216
i
40
32
30
20
19
18
17
16
xd
32768
16384
8192
4096
2048
1024
512
256
2i
215
214
213
212
211
210
29
28
i
15
14
13
12
11
10
9
8
xd
128
64
32
16
8
4
2
1
2i
27
26
25
24
23
22
21
20
i
7
6
5
4
3
2
1
0
xd
0,5
0,25
0,125
0,0625
0,03125
0,015625
7,8125-3
3,90625-3
2i
2-1
2-2
2-3
2-4
2-5
2-6
2-7
2-8
i
-1
-2
-3
-4
-5
-6
-7
-8
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
7
Převod: Dvojková - Desítková •
Výpočtem z definičního vztahu: n
n
xd = ∑ a i . 2 = ∑ a i . vi i
−m
•
−m
Př: Váhy řádových míst
vi
3
2
1
0
-1
-2
-3
b
Dvojkové číslo
d
Desítková hodnota Řádová čárka
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
8
Převod: Desítková – Jiná se základem z •
Převod celé části desítkového čísla: Krok 1:
xd =
n
n
0
1
i i −1 0 a . z = a z + z . a . z /z i 0 i ∑ ∑
xd a a = ∑ a i . z i −1 + 0 = N 0 + 0 z z z 1 n
Krok 2:
N0 =
n
n
1
2
Zbytek po dělení = a0
i −1 i −2 0 a . z = a . z + z . a . z /z i i ∑ ∑ 1
N0 a n a = . ∑ a i . z i −2 + 1 = N1 + 1 z z z 2 Krok k:
Celá část podílu
Nk = ..... z
=0+
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
Konec převodu
ak +1 z 9
Převod: Desítková – Jiná se základem z •
Převod zlomkové části desítkového čísla: −m
Krok 1:
−m 1 a xd = ∑ a i . z i = −1 + . ∑ a i . z i +1 / . z z z −2 −1 −m
Celá část součinu = a-1
−2
Zlomková část součinu
xd . z = a−1 + ∑ a i . z i +1 = a−1 + F− 2 Krok 2:
F− 2 =
−m
∑ ai . z
i +1
−2
F− 2 . z = a− 2 +
Krok r:
F− r = .......
a− 2 1 = + z z
−m
i+2 a . z i ∑
/.z
−3
−m
i+2 a . z = a− 2 + F−3 i ∑ −3
= a− r + 0
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
Konec převodu POZOR – nemusí skončit po konečném počtu kroků 10
Převod: Desítková – Dvojková – celá část čísla • • • • •
Dělíme postupně základem soustavy (z = 2) Zbytek po dělení v daném kroku je roven postupně koeficientům a0, a1, … Celá část podílu postupuje do dalšího kroku, kde opět dělíme z = 2. Pokud máme k dispozici dostatek pozic (bitů) binárního čísla je převod přesný (bez ztráty přesnosti) Pozor: koeficienty ai vznikají od nejnižší váhy tj. a0, a1, a2, …
•
Př:
Nk / z
xd = 38d
Zbytek
ai
38 / 2 =
19
0
a0
19 / 2 =
9
1
a1
9/2=
4
1
a2
4/2=
2
0
a3
2/2=
1
0
a4
1/2=
0
1
a5
xb= 100110b
Konec převodu A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
11
Převod: Desítková – Dvojková – zlomková část čísla • • • •
Násobíme postupně základem soustavy (z = 2) Celé části součinu jsou postupně rovny koeficientům a-1, a-2, … Zlomková část součinu postupuje do dalšího kroku, kde násobíme (z = 2) Pozor: Číslo zapsané v desítkové soustavě konečným počtem číslic může vést v jiné soustavě na nekonečný počet číslic nebo na počet číslic pro které nemáme dostatek pozic (šířka slova) - ztráta přesnosti.
•
Př:
xd = 0,5625d
Nk . z
Součin
Celá č.
ai
Zlomk.č.
0,5625
.2=
1,125
1
a-1
0,125
0,125
.2=
0,25
0
a-2
0,25
0,25
.2=
0,5
0
a-3
0,5
0,5
.2=
1,0
1
a-4
0,0
0,0
.2=
0,0
0
a-5
0,0
Konec převodu A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
xb= 0,1001b
12
Převod: Dvojková – Šestnáctková •
Dvojková a šestnáctková jsou příbuzné soustavy neboť:
z = 2, w =16 ⇒ w = z 4 3 i 4j xb = ∑ a i . z = ∑ ∑ a 4 j +i . z . z i =0 j =0 i =0 n
•
Tedy:
n/4
i
xh =
m
n/4
4k b . w = b . z ∑ k ∑ k k
k =0
k =0
3 i xh = ∑ b k . w = ∑ ∑ a 4 k + i . z . w k k =0 k =0 i =0 m
•
Porovnáním:
n/4
k
bk =
3
i a . z ∑ 4 k +i i =0
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
13
Převod: Dvojková – Šestnáctková •
Z předchozí stránky: • Jedna šestnáctková číslice odpovídá čtyřem číslicím dvojkovým • Mezi zápisy v šestnáctkové a dvojkové soustavě je pouze formální rozdíl • Důsledek: Převod mezi soustavami je triviální
•
Př: Dvojková na šestnáctkovou soustavu • Dvojkové číslice rozdělíme do skupin po čtyřech od řádové čárky a každou skupinu zapíšeme šestnáctkovou číslicí 1010 0110 1111 , 1001b A
6
F , 9h
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
14
Převod: Šestnáctková – Dvojková •
Př: Dvojková na šestnáctkovou • Každou šestnáctkovou číslici zapíšeme čtyřmi číslicemi dvojkovými
3 B E 7 , 6 8h
0011 1011 1110
0111 , 0110 1000b
• Zápis v šestnáctkové soustavě je přehlednější a kratší než ve dvojkové a přesto umožňuje detailní pohled na jednotlivé bity • Zápis v šestnáctkové soustavě se často používá především v popisu hardware počítačů a při programování v assembleru
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
15
Číslice šestnáctkové soustavy •
Zápis číslic A,B,… ,F nebo a,b,… ,f se považuje za totožný Dec
Hex
Bin
Dec
Hex
Bin
0
0
0000
8
8
1000
1
1
0001
9
9
1001
2
2
0010
10
A
1010
3
3
0011
11
B
1011
4
4
0100
12
C
1100
5
5
0101
13
D
1101
6
6
0110
14
E
1110
7
7
0111
15
F
1111
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
16
Řádová mřížka • •
Řádová mřížka definuje formát čísel zobrazitelných v počítači Tj. definuje nejvyšší řád n a nejnižší řád –m
•
Vlastnosti řádové mřížky: • M - Modul ř.m. - nejmenší číslo, které již v ř.m. není zobrazitelné • ε - Jednotka ř.m. – nejmenší číslo zobrazitelné v ř.m. • l - Délka ř.m. – počet řádů obsažených v ř.m. • z - Základ číselné soustavy
M = z n +1
ε = z −m l = n + m +1 A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
17
Řádová mřížka •
Př: Vlastnosti řádových mřížek Řádová čárka
M = 28 = 256, l = 8, ε = 20 =1 M = 21 = 2,
l = 8, ε = 2 −7
M = 23 = 8,
l = 4, ε = 2 −1
M = 28 = 256, l =12, ε = 2 −4
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
18
Zobrazení záporných čísel •
Polyadické číselné soustavy – jen nezáporná čísla
•
Zobrazení záporných čísel – pomocí číselných kódů
•
Používané číselné kódy: • Přímý kód
(Sign & Magnitude Code)
• Aditivní kód
(Biased Code)
• Doplňkový kód (Two’s Complement Code) (též nazývaný „Dvojkový doplněk“ nebo „Druhý doplněk“)
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
19
Přímý kód (Sign and Magnitude Code)
SM ( x) = s . 2 n +1 + m Kde : s = sign( x), m = | x |, M = modul řád. mřížky Pro : = (− M / 2) < x < ( M / 2) SM −1 ( x) = x = (−1s ) . m
Zde pro 8bitové slovo
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
20
Přímý kód (Sign and Magnitude Code)
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
21
Přímý kód (Sign and Magnitude Code) M = 8 = 1000b (3bitová čísla včetně znaménka)
x
S(x)
S(x)
x
+3
011
000
+0
+2
010
001
+1
+1
001
010
+2
+0
000
011
+3
-0
100
100
-0
-1
101
101
-1
-2
110
110
-2
-3
111
111
-3
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
22
Aditivní kód (Biased Code) B( x) = x + K Pro : = − K ≤ x < ( M − K ) Kde : M = modul řád . mřížky Obvykle volba : K = M / 2
B −1 ( x) = x = B( x) − K
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
23
Aditivní kód (Biased Code)
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
24
Aditivní kód (Biased Code) M = 8 = 1000b (3bitová čísla včetně znaménka), K=4 (tj. 1/2M)
x
B(x)
B(x)
x
+3
111
000
-4
+2
110
001
-3
+1
101
010
-2
0
100
011
-1
-1
011
100
0
-2
010
101
1
-3
001
110
2
-4
000
111
3
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
25
Dvojkový doplněk (Two's Complement Code) C ( x) = x
Pro : 0 ≤ x < ( M / 2)
C ( x) = x + M
Pro: (− M / 2) ≥ x < 0
Kde : M = modul řád . mřížky
C −1 ( x) = x = C ( x)
Pro: 0 ≤ C ( x) < ( M / 2)
C −1 ( x) = x = C ( x) − M
Pro: ( M / 2) ≤ C ( x) < M
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
26
Dvojkový doplněk (Two's Complement Code)
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
27
Dvojkový doplněk (Two's Complement Code) M = 8 = 1000b (3bitová čísla včetně znaménka)
x
C(x)
C(x)
x
+3
011
000
0
+2
010
001
1
+1
001
010
2
0
000
011
3
-1
111
100
-4
-2
110
101
-3
-3
101
110
-2
-4
100
111
-1
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
28
Výpočet dvojkového doplňku − C ( x) = NOT (C ( x)) + 1 Př:
x = 610 − x = − 610
C ( x) = 0110 2 − C ( x) = ?
Výpočet:
Kontrola:
NOT (C ( x)) = 10012
C ( x) = 01102
+1
+ (−C ( x)) = 10102
− C ( x)
= 10102
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
0 29
Sčítání – čísla bez znaménka (kladná) •
Jednobitové sčítání (pravdivostní tabulka): D 0 1 2 3 4 5 6 7
•
a 0 0 0 0 1 1 1 1
b 0 0 1 1 0 0 1 1
ci 0 1 0 1 0 1 0 1
cs 0 0 0 1 0 1 1 1
s 0 1 1 0 1 0 0 1
Př. Vícebitové sčítání (předpoklad Ci=0): 241d =
1111 0001b
250d =
1111 1010b
+7d =
0000 0111b
+8d =
0000 1000b
248d =
1111 1000b
258d ≠
0000 0010b
Cs = 0 A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
Cs = 1
Mimo formát: 30
Odečítání – čísla bez znaménka (kladná) •
Jednobitové odčítání (pravdivostní tabulka)
di = ai − bi − ci
•
D
ai
bi
ci
cs
di
0 1 2 3 4 5 6 7
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 1 1 1 0 0 0 1
0 1 1 0 1 0 0 1
Př. Vícebitové odčítání (předpoklad Ci=0, význam „borrow“): 243d =
1111 0011b
–7d =
0000 0111b
236d =
1110 1100b
(borrow) Cs = 0 A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
31
Přeplnění (Overflow) – čísla se znaménkem •
U čísel se znaménkem je přeplnění (Overflow), tj výsledek je mimo formát, indikováno nastavením příznakového bitu OV (Overflow).
•
Bit OV je součástí stavového slova procesoru (PSW, Flags).
•
Logika bitu OV musí sledovat přenos z posledního a ještě předposledního bitu formátu. •
•
OV = Cs xor Cs-1
Odečítání pomocí dvojkového doplňku (Two’s Complement) • Tento způsob je použitý v počítači
d = x − y = x + (− y ) = x + ( NOT ( y ) + 1) A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
32
Přeplnění (Overflow) – čísla se znaménkem •
Př: Přeplnění z formátu (M=1000, zde formát +7,-8) 7d =
0 1 1 1b
4d =
0 1 0 0b
–4d =
1 1 0 0b
–7d =
1 0 0 1b
3d =
0 0 1 1b
–4d =
1 1 0 0b
0d =
0 0 0 0b
7d =
0 1 1 1b x x Cs Cs-1 OV=0
–8d =
1 0 0 0b
Cs Cs-1
OV=0
Cs Cs-1
OV=0
4d =
0 1 0 0b
6d =
0 1 1 0b
–4d =
1 1 0 0b
4d =
0 1 0 0b
3d =
0 0 1 1b
–5d =
1 0 1 1b
8d ≠
1 0 0 0b
9d ≠
1 0 0 1b
–9d ≠
x Cs Cs-1
OV=1
x Cs Cs-1
OV=1
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
0 1 1 1b x Cs Cs-1 OV=1
33
Sčítání a odčítání – čísla se znaménkem •
Př. Sčítání a odčítání 4bitovou sčítačkou ve dvojkovém doplňku 73d =
0100b
1001b
73d =
0100b
1001b
+27d =
0001b
1011b
–27d =
1110b
0101b
Cs 100d =
1b C s
0110 x x b Cs Cs-1
Cs
0b 0100b
46d =
OV=0
0b C s 0010b
Cs Cs-1
0b 1110b
OV=0
120d =
0111b
1000b
–120d =
1000b
1000b
+16d =
0001b
0000b
–16d =
1111b
0000b
0b C s
Cs 136d ≠
1000b
x Cs Cs-1
0b 1000b
Cs –136d ≠
OV=1
A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
0b C s
0b
0111b 1000b x OV=1 Cs Cs-1 34
Struktura a architektura počítačů
Číselné soustavy Převody mezi soustavami, kódy Aritmetické operace KONEC
České vysoké učení technické Fakulta elektrotechnická A7B14SAP Struktura a architektura počítačů 9 - Číselné soustavy
35