Hoofdstuk 6
description
Transcript of Hoofdstuk 6
1
Hoofdstuk 6
Gegevensvoorstellingen Berekeningen
2
Inhoud
• Talstelsels
• Getallen in een Computer
• Natuurlijke getallen
• Gehele getallen
• Gebroken getallen
• Bewegende komma getallen
• Andere gegevens (letters, …)
3
Talstelsels
• Getal = abstract (hoeveelheid)– Eigenschappen (priem, deelbaar, …)
• Voorstelling = “naam”– Systematiek: Talstelsel– Berekeningen in het talstelsel– Voorbeeld: r-tallig talstel
4
r-tallig talstelsel
• r = grondtal (= vast)
• Elk cijfer: gewicht in functie van de positie
• Zij ci { 0, 1, …, r-1 }
cn-1 rn-1 + cn-2 rn-2 + … + c1 r1 + c0 r0
Voorstelling = cn-1 cn-2 … c1 c0
gewicht
5
Voorbeelden
• Decimaal r = 10, c {0, 1, …, 9}1235
• Binair r = 2, c {0, 1}10011010011
• Octaal r = 8, c {0, 1, …, 7}2323
• Hexadecimaal r = 16, c {0, ..., 9, A, …, F}4D3
MO: voorstellingen, zelfde getal!
6
Getallen in een Computer
• Eindig aantal cijfers– Ligt vast– Soms # verschillende formaten
(bijv. 16-bit en 32-bit getallen)
• Gevolgen:– Niet alle getallen kunnen voorgesteld worden– Eigenschappen uit getallenleer gelden soms niet
• Gesloten t.o.v. +, , ו Associativiteit, distributiviteit gelden soms niet
7
Getallen in de Computer
• Bijv. stel 3 decimale cijfers (alleen pos.)– Alleen getallen uit {0, 1, …, 999 }– Niet gesloten t.o.v. som / vermenigvuldiging
590 + 530 1120 (= 4 cijfers! OVERLOOP)
– Associativiteit?
400 + (800 300) (400 + 800) 300
– Distributiviteit?
005 × (300 200) (005 × 300) (005 × 200)
8
Natuurlijke getallenNatuurlijke getallenNatuurlijke getallenNatuurlijke getallen
9
Natuurlijke getallen
• Omzetting Binair Decimaal• Omzetting Binair Octaal/Hexadecimaal• BCD voorstelling• Binair rekenen
– optelling– aftrekking (zie ook gehele getallen)– vermenigvuldiging– deling
10
Omzetting Decimaal Binair
X cn-1 … c1 c0 met ci {0, 1}
X0 = X = cn-1 2n-1 + … + c1 21 + c0 20
X0 = even: c0 = 0 X0 = oneven: c0 = 1
X1 = X0 div 2 = cn-1 2n-2 + cn-2 2n-3 + … + c1 20
X1 = even: c1 = 0 X1 = oneven: c1 = 1
enz.
11
Omzetting Decimaal Binair
X cn-1 cn-2 … c1 c0 met ci {0, 1}
X0 = X, Xi = Xi-1 div 2
Xi = even: ci = 0 Xi = oneven: ci = 1
12
Omzetting Decimaal Binair 746 0
373 1
186 0
93 1
46 0
23 1
11 1
5 1
2 0
1 1
1 0 1 1 1 0 1 0 1 0
13
Omzetting Binair Decimaal
X cn-1 … c1 c0 met ci {0, 1}
X = cn-1 2n-1 + cn-2 2n-2 … + c1 21 + c0 20
= (cn-1 2 + cn-2 ) 2n-2 + … + c1 21 + c0 20
= (( ... (( 0 + cn-1) 2 + cn-2) 2 + … + c1) 2 + c0
X0 = 0 Xi = Xi-1 × 2 + cn-i (i=1 .. n)
X = Xn
14
Omzetting Decimaal Binair
1 0 1 1 1 0 1 0 1 0
0 2 4 10 22 46 92 186 372 746
1 2 5 11 23 46 93 186 373 746
× 2
× 2
× 2
× 2
× 2
× 2
× 2
× 2
× 2
+ + + + + + + + + +
15
Octaal / Hexadecimaal
• Compacter dan Binair
• Nauw verwant met Binair
• Gebruik: – Programmeertalen– Tonen van inhoud van Geheugen/Register
16
Omzetting van/naar Octaal/Hexadecimaal
• Analoog binair
• Eenvoudiger: omweg via binair– Decimaal Binair Octaal/Hexadecimaal– Octaal/Hexadecimaal Binair Decimaal
• Verklaring:
hm 16m + … + h1 161 + h0 160
hi = ci3 23 + ci2 22 + ci1 21 + ci0 20 en 16 = 24
• Groeperen van RECHTS naar LINKS!
17
Omzetting van/naar Octaal/Hexadecimaal
1 0 1 1 1 0 1 0 1 0
1 3 5 2 (oct.)
1 0 1 1 1 0 1 0 1 0
2 E A (hex.)
18
Binary Coded Decimal (BCD)
• = decimale voorstelling, cijfers binair
• 4 bits per cijfer
• vb. 1586 0001 0101 1000 0110
• Complexe rekenregels ...
19
Aantal Cijfers
• n decimale cijfers
• b bits
10n-1 x < 10n en 2b-1 x < 2b
dus 10n 2b
bijgevolg b log2 10n = n log2 10 = 3,3 n
• n dec. cijfers 3,3 n bits 1,11 n oct. 0,83 n hex.
• bijv. 300 dec. cijfers 1000 bits
20
Optellen van binaire getallen
0 + 0 = 0 1 + 0 = 1
0 + 1 = 1 1 + 1 = 10
1 0 0 1 1 0 1 0 1 1
+ 1 0 1 1 1 0 0 1 1 0
1 0 1 0 1 0 1 0 0 0 1
Merk Op: som van twee n-bit getallen: max. n+1 bits
1 1 1 1 1 1 overdrachten
21
Optellen van binaire getallen
0 1 1 1 0 1 1 1 0
1 0 0 1 1 0 1 0 1 1
+ 1 0 1 1 1 0 0 1 1 0
1 0 1 0 1 0 1 0 0 0 1
OPT HOPT
22
Halve Opteller (HOPT)
X Y S T
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
HOPT
X Y
S (som)T
(overdracht)
EN
EOFXY S
T
23
Opteller (OPT)Xi Yi Oi Si Ti+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
OPT
Xi Yi Ti
Si (som)Ti+1
(overdracht)
HOPTXi
Yi
Ti
HOPT
OF Ti+1
Si
O
TS
S
24
Optelschakeling (parallel)
OPT HOPTOPTOPTOPT
Xn -1 Xn -2 X2 X1 X0
Yn -1 Yn -2 Y2 Y1 Y0
Sn-1 Sn -2 S2 S1 S0
Overloop!
25
Optelschakeling (serieel)
OPT
1
overdracht
X-register
Y-register
S-registerS
T
Initieel 0 (Stap=0)Stap = n
OVERLOOP?
OVI, PO7
Xi
Yi
Ti
schuifregisters
26
Verschil van binaire getallen
0 – 0 = 0 1 – 0 = 1 10 – 1 = 1
0 – 1 = — 1 – 1 = 0
1 0 0 1 1 0 0 0 1 1
– 0 0 1 1 1 0 0 1 1 0
0 1 0 1 1 1 1 1 0 1
Merk Op: grootste - kleinste (anders negatief)
0 1 1 10 lenen 0 10 0 1 1 10
27
Verschilschakeling (parallel)
AFT HAFTAFTAFTAFT
Xn -1 Xn -2 X2 X1 X0
Yn -1 Yn -2 Y2 Y1 Y0
Vn-1 Vn -2 V2 V1 V0
Fout!
28
Vermenigvuldigen
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1
.
11011 (X) 27
× 01101 (Y) 13
11011 81
00000 27
11011 351
11011
00000
101011111 (XY)
X of 0!
29
Efficiënte Implementatie
• Partieel Sommen: X of 0
• Partieel Sommen direct bijtellen
X Y = X × Yi 2i
= X × 2n × Yi 2i 2-n
= (X Yi 2n) 2i-n
= (X Y0 2n ) 2-n + (X Y1 2n ) 21-n + …
+ (X Yn-1 2n ) 2-1
30
Efficiënte Implementatie (2)
X Y = (X Y0 2n ) 2-n + (X Y1 2n ) 21-n + … + (X Yn-1 2n ) 2-1
= ((X Y0 2n ) 2-1 + (X Y1 2n )) 21-n + … + (X Yn-1 2n ) 2-1
= (… (((0 + X Y0 2n ) 2-1 + X Y1 2n ) 2-1) + … + X Yn-1 2n ) 2-1
P(0) = 0
P(i) = (P(i-1) + X Yi-1 2n ) 2-1 i = 1 .. n
P(n) = X Y
31
Algoritme
An-1 A0... Qn-1 Q0...
Xn-1 X0...
T
N bit optellerQ0 = 1
= verschuif naar rechts
T 0, A 00…0, Q YN keer: (a) Q0 = 1: C, A A + X (b) verschuif T, A, Q
32
Voorbeeld
X = 11011
Y = 01101
i T A Q
0 0 00000 01101
1 0 11011 01101 (+)
0 01101 10110 (»)
2
0 00110 11011 (»)
i T A Q
3 1 00001 11011 (+)
0 10000 11101 (»)
4 1 01011 11101 (+)
0 10101 11110 (»)
5
0 01010 11111 (»)
X Y
Merk Op: indien resultaat n bits: overloop als A 00…0
33
Deling
• Deling = inverse vermenigvuldiging
• Vermenigvuldiging = # { optelling, versch. }
• Deling = # { aftrekking, verschuiving }
34
Gehele GetallenGehele GetallenGehele GetallenGehele Getallen
35
Gehele Binaire Getallen
• n bit-getallen
• 0000…000 t.e.m. 1111…111
n bits n bits
• Natuurlijke getallen: [0, 2n 1]
• Gehele getallen: ½ stellen positieve getallen voor ½ stellen negatieve getallen voor
36
Gehele Binaire Getallen
• Verschillende wijzen van opdelen:– Voorteken– 1-complement– 2-complement– Plus 2n-1 notatie
37
Voorteken
• Eerste Bit = Tekenbit
Xn-2 X0...Xn-1
Tekenbit0: positief1: negatief
Xi 2i
.i = 0
n-2
38
Voorteken
• Bijv. n = 8
00001101 (= +13)
10001101 (= 13)
01111111 (= +127)
11111111 (= 127)
00000000 (= +0)
10000000 (=0)
39
Voorteken
• Getallenbereik:
[2n-11) ... 1, 0, +0, +1, … +(2n-11)]
• Symmetrisch bereik
• 0 =?= +0
• Rekenregels Complex (+, ) X = Xn-1 Xn-2 … X1 X met Xn-1 = tekenbit
Gevraagd: Z := X + Y
40
Voorteken: Optelling
{ Z = X + Y }
if ( Xn-1 == Yn-1 ) /* Xn-1, Yn-1 = tekenbit */
{ Zn-1 = Xn-1; Zn-2..0 = Xn-2..0 + Yn-2..0 }
else {
if (Xn-2..0 > Yn-2..0 )
{ Zn-1 = Xn-1; Zn-2..0 = Xn-2..0 Yn-2..0 }
else { Zn-1 = Yn-1; Zn-2..0 = Yn-2..0 Xn-2..0 }
}
41
Voorteken: Vermenigvuldiging
{ Z = X × Y }
Zn-1 = Xn-1 EOF Yn-1 ;
Zn-2..0 = Xn-2..0 * Yn-2..0 ; /* test op overloop! */
42
2-Complement2-Complement2-Complement2-Complement
• Eerste bit = tekenbit
000…000
000…001
000…010
000…011
…
011…110
011…111
100…000
100…001
100…010
100…011
…
111…110
111…111
0
1
2
3
2n-1 2 2n-1 1
2n-1
2n-1 1
2n-1 2
2n-1 3
2 1
43
2-Complement
• Positief: 1e bit = 0, overige zie natuurlijke getallen
• Negatief: 2n | X |
1 2n 1 = 111…111
2 2n 2 = 111…110
2n-1 2n 2n-1 = 2n-1 = 100…000
44
2-Complement
• Bijv. n = 8
00000000 (= +0)
00000001 (= +1)…
00001101 (= +13)
…
01111111 (= +127)
10000000 (= 128)
10000001 (= 127)…
10001101 (= 115)
…
11111111 (= 1)
45
2-Complement
• Getallenbereik
[2n-1, (2n-11) ... 1, +0, +1, … +(2n-11)]
• Asymmetrisch bereik!
• 0 heeft slechts 1 voorstelling
• Rekenregels eenvoudig!
• Omrekenformule:
X = Xn-1 (2n-1) + Xn-2 2n-2 + … + X0
46
2-Complement• Omrekenformule:
X < 0: 2n | X | = Xi 2i (Xn-1 = 1)
| X | = 2n + Xi 2i
= 2n-1 2n-1 + 1 × 2n-1 + Xi 2i
• X = Xn-1 (2n-1) + Xn-2 2n-2 + … + X0
(ook geldig voor positieve getallen: xn-1 = 0)
i = 0 n-2
n-1
i = 0
i = 0
n-1
47
2-Complement & Restklassen
• congruent modulo ma = b mod m of a b (mod m) (a b) deelbaar door m
• equivalentierelatie• equivalentieklassen (restklassen)
0 = { …, 2m, m, 0, m, 2m, … }1 = { …, 2m+1, m+1, 1, m+1, 2m+1, … }2 = { …, 2m+2, m+2, 2, m+2, 2m+2, … }...
48
2-Complement & Restklassen
• Q = {0, 1, …, m-1 } = Quotiëntverzameling
• Congruentierelatie is verenigbaar met +, ×
x r, y s, x+y t a r, b s, a+b t
x r, y s, xy t a r, b s, ab t
• Q, +, × is commutatieve ring
49
2-Complement & Restklassen
Voorbeeld: a b (mod 5)0 = { …, 10, 5, 0, 5, 10, … }1 = { …, 9, 4, 1, 6, 11, … }2 = { …, 8, 3, 2, 7, 12, … }3 = { …, 7, 2, 3, 8, 13, … }4 = { …, 6, 1, 4, 9, 14, … }
+ 0 1 2 3 4 × 0 1 2 3 40 0 1 2 3 4 0 0 0 0 0 0
1 1 2 3 4 0 1 0 1 2 3 4
2 2 3 4 0 1 2 0 2 4 1 3
3 3 4 0 1 2 3 0 3 1 4 2
4 4 0 1 2 3 4 0 4 3 2 1
50
2-Complement & RestklassenRestklassen modulo 2n
0 = { …, 2n+1, 2n, 0, 2n, 2n+1 … }
1 = { …, 2n+1, 1, 2n+1, … }
2 = { …, 2n+2, 2, 2n+2, … }…
2n-1 1 = { …, 2n-1 1, 2n-1 1, 2n +2n-1 1, … }
2n-1 = { …, 2n-1 , 2n-1, 2n +2n-1 , … }…2n 2 = { …, 2, 2n 2, 2n+1 2, … }
2n 1 = { …, 1, 2n 1, 2n+1 1, … }
Plus-conventie
2-Complement
51
2-Complement
• Besluit:
– Apparatuur werkt met restklassen
– Resultaat steeds modulo 2n
– d.i. alleen laatste n bits behouden
52
Bewerkingen met 2-complement
• Inverteren
• Som
• Verschil X Y = X + (Y)
• Product
• Aanpassing van woordlengte
53
Inverteren
• X X• X negatief: 2n | X |
2n = (2n 1 + 1)
2n | X | = 2n 1 | X | + 1
= 111…11 |X| + 1
= (1Xn-1) (1Xn-2) … (1X0) + 1
• Bijgevolg: bits omkeren en 1 bijtellen
54
Inverteren
• Voorbeeld: (n = 8)
01100110 (132)
10011001 (omkeren)
+ 1
10011010 (132)
• Merk op: ook geldig X +X
10011010 (132)
01100101 (omkeren)
+ 1
01100110 (+132)
55
Inverteren
• Schakeling: n × NIET, n × HOPT
HOPT HOPTHOPT HOPT
1
X = xn-1 x2 x1 x0
X =Y= yn-1 y2 y1 y0
...
56
Som
OPT HOPTOPTOPT
Xn Xn -1 X2 X1 X0
Yn Yn -1 Y2 Y1 Y0
Sn Sn -1 S2 S1 S0
OPT
57
Som
• Voorbeelden (n = 8)
00010110 (22)
+ 11100111 (-25)
11111101 (-3)
00011001 (25)
+ 11101010 (-22)
100000011 (3)
11100111 (-25)
+ 11110101 (-11)
111011100 (-36)
58
Som
• Overloop:x, y > 0 x+y < 0x, y < 0 x+y > 0
• Voorbeelden: (n=8)
01010110 (86) 10010111 (-105)
+ 01000001 (65) + 10010100 (-108)
10010111 (-105) 100101011 (43)
59
Som
• Overloopdetectie = eenvoudig– laatste 2 overdrachten gelijk: OK– anders: OVERLOOP
• Voorbeelden: (n=8) 01000000 10010100 (overdr.)
01010110 (86) 10010111 (-105)
+ 01000001 (65) + 10010100 (-108)
10010111 (-105) 100101011 (43)
60
Som
• Voorbeelden (n = 8) 00000110 00010110 (22)
+ 11100111 (-25)
11111101 (-3)
11111000 00011001 (25)
+ 11101010 (-22)
100000011 (3)
11100111 11100111 (-25)
+ 11110101 (-11)
111011100 (-36)
overdrachten
61
Optelling
OPT HOPTOPT
Xn Xn -1 X2 X1 X0
Yn Yn -1 Y2 Y1 Y0
Sn Sn -1 S2 S1 S0
OPT OPT
Overloop (indien 1)
EOF
62
Product
11110011 (-13) × 00000111 (7)
11110011
11110011
11110011
11010100101 10100101 (-91)
• Overloop Mogelijk!• Algoritme van vermenigv. natuurlijke getallen
63
Aanpassing woordlengte
• Aanpassen lengte v/d voorstelling– Kopiëren van tekenbit
• Voorbeeld: 8-bit vs. 16-bit00011010 (26) 0000000000001010 (26)
11100110 (26) 1111111111100110 (26)
64
Vergelijking: 10-complement(Decimaal)
• Voorbeeld: 4 decimale cijfers
• positief: 0000 … 4999
• negatief: 104 | X |
1 9999 = 10000 12 9998
4000 6000
5000 5000
65
10-Complement
• Som 0500 + 9660 = 10160 0160
(500) + (340) = (160)• Product
0120 9960 = 1495200 5200 (120) (40) = (4800)• Overloop mogelijk!
3500 + 2000 = 5500 (3500) + (2000) = (-4500) !!!
66
1-Complement
• Positief: 1e bit = 0, overige zie natuurlijke getallen
• Negatief: 2n 1 | X |• Getallenbereik
[2n-11) ... 1, 0, +0, +1, … +(2n-11)]
• Verouderd (niet meer gebruikt)
67
Plus 2n-1 Notatie
000…000
000…001
000…010
000…011
…
011…110
011…111
100…000
100…001
100…010
100…011
…
111…110
111…111
0
1
2
3
2n-1 2 2n-1 1
2n-1
2n-1 2n-
1 2n-1
2 1
68
Plus 2n-1
• Getallenbereik
[2n-1, (2n-11) ... 1, +0, +1, … +(2n-11)]
• Asymmetrisch bereik!
• 0 heeft slechts 1 voorstelling
• = 2-complement met omgekeerde tekenbit
• Voordeel: positief getal > negatief getal
69
Vergelijking (8-bit getallen)Dec. Voorteken 1-Compl. 2-Compl. Plus 128
0 00000000 00000000 00000000 100000001 00000001 00000001 00000001 100000012 00000010 00000010 00000010 100000105 00000101 00000101 00000101 10000101
10 00001010 00001010 00001010 10001010100 01100100 01100100 01100100 11100100126 01111110 01111110 01111110 11111110127 01111111 01111111 01111111 11111111128 onbest. onbest. onbest. onbest.
70
Vergelijking (8-bit getallen)Dec. Voorteken 1-Compl. 2-Compl. Plus 128
-0 10000000 11111111 onbest. onbest.-1 10000001 11111110 11111111 01111111-2 10000010 11111101 11111110 01111110-5 10000101 11111010 11111011 01111100
-10 10001010 11110101 11110110 01110110-100 11100100 10011011 10011100 00011100-126 11111110 10000001 10000010 00000010-127 11111111 10000000 10000001 00000001-128 onbest. onbest. 10000000 00000000
71
Gebroken GetallenGebroken GetallenGebroken GetallenGebroken Getallen
72
Gebroken getallenGebroken getallen
• Gewichten met negatieve exponent
c-1 r-1 + c-2 r-2 + … +c-m r-m
Voorstelling = ck … c1 c0 . c-1 c-2 … c-m
ck rk + … + c1 r1 + c0 r0 +
73
Gebroken Getallen
• Omzetting Decimaal Binair
• Omzetting Binair Decimaal
• Gebroken getallen in de computer– Vaste Komma Voorstelling– Bewegende Komma Voorstelling
74
Omzetting Binair Decimaal
c-1 2-1 + c-2 2-2 + … + c-(m-1) 2-(m-1) + c-m 2-m
= c-1 2-1 + c-2 2-2 + … + 2-(m-1) (c-(m-1) + c-m 2-1)
= 2-1 (c-1 + 2-1 (c-2 + … + 2-1 (c-(m-1) + 2-1 c-m)
75
Omzetting Binair Decimaal
0. 0 0 1 0 1 0
5 5 5 1 1 032 16 8 4 2
5 5 5 5 1 1 032 16 8 4 2
2
+ + + + + +
2 2
2 2
2
76
Omzetting Decimaal Binair
x = x0 = c-1 2-1 + c-2 2-2 + … + c-m 2-m
x1 = 2 x0 = c-1 + c-2 2-1 + … + c-m 2-(m-1)
x1 1 ? c-1 = 1 x1< 1 ? c-1 = 0
x2 = 2 (x1 c-1 ) = c-2 + c-3 2-1 +… + c-m 2-(m-2)
x2 1 ? c-2 = 1 x2< 1 ? c-2 = 0
enz ...
77
Omzetting Decimaal Binair
0.158 0.0.316 00.632 01.264 10.528 01.056 10.112 0...
78
Vaste komma voorstelling
• Komma op vaste plaats “verondersteld”
• Bijvoorbeeld :
01101110
“.” na 5de bit 01101.110
(13.75)
“.” na 3de bit 011.01110
(3.4375)
79
Vaste komma voorstelling
• Verband met gehele getallen (p bits na “.”)
cn-1 2n-p-1 +… + cp 20 + cp-1 2-1 +…+ c0 2-p
= (cn-1 2n-1 +… + cp 2p + cp-1 2p-1 +…+ c0 20) 2-p
• Voorbeeld:011.01110 = 01101110 × 2-5
(3.3475) = (110) × 2-5 = (110) ÷ 32 (decimaal)
• Apparatuur rekent met gehele getallen
• Interpretatie door SW
80
Vaste komma voorstelling
• n-bit voorstelling: 2n mogelijke getallen
• per bit extra na “.”:– bereik gehalveerd– nauwkeurigheid verdubbeld
... ...... ...
0
bereik... ...
81
Vaste komma voorstelling
• Voorbeeld: n=8, p bits na “.”, 2-compl.p = 0 bereik = [128, 127] afstand = 1
p = 1 bereik = [64.0, 63,5] afstand = 0.5
p = 2 bereik = [32.0, 31.75] afstand = 0.25
p = 3 bereik = [16.0, 15.975] afstand = 0.125
…
82
Vaste komma voorstelling
• Bewerkingen– Som/Verschil– Product/Quotiënt
83
VKV: Som/Verschil
• “.” Aligneren
• Voorbeeld 011.10110 01110110 × 2-5
+ 0010.0011 + 00100011 × 2-4
• Aligneren (= verschuiven)
011.10110 01110110 × 2-5
+ 010.00110+ 01000110 × 2-5
101.11100 10111100 × 2-5
84
VKV: Product/Quotiënt
• Product # cijfers na “.” = # cijfers na “.”
00010.010 00010010 × 2-3
× 000001.10× 00000110 × 2-2
011.11110 01111110 × 2-5
3+2 = 5
• Quotiënt: # extra cijfers na “.” = #cijfers na “.” (deeltal) #cijfers na “.” (deler)
85
Vaste komma voorstelling
• Alleen als bereik van getallen gekend
• Anders, snel overloop!
• Vandaar: bewegende komma voorstelling
86
Bewegende komma voorstelling
87
Bewegende komma voorstelling
• Het Principe
• Bewegende komma voorstelling
• Bewerkingen– Optelling– Vermenigvuldiging
88
Bewegende komma voorstelling
• Zeer kleine getallen zeer grote getallen• Gebaseerd op “wetenschappelijke” notatie• X = ± m × 10e
m = mantisse (fractie)e = exponent
• Voorbeelden:3.14 = 3.14 × 100 = 0.314 × 101
0.00001 = 1.0 × 10-5 = 0.1 × 10-4
1999 = 1.999 × 103 = 0.1999 × 104
89
Bewegende komma voorstelling
• Meer dan één voorstellingswijze!
• Standaard voorstelling (Normaalvorm)– vb. 0.1 | m | < 1 (behalve voor X = 0)– omzetten naar standaard voorst. = normalisatie
• Voorbeelden:3.14 × 100 = 0.314 × 10-1 = 0.0314 × 102 1.0 × 10-5 = 0.1 × 10-4 = 0.01 × 10-3
1.999 × 103 = 0.1999 × 104 = 0.001999 × 106
90
Eigenschappen
• Voorbeeld (decimaal talstelsel):– 3 cijfers (+ teken) voor mantisse– 2 cijfers (+ teken) voor exponent
• Bereik (positieve getallen) +0.100 × 1099 tot +0.999 × 10+99
= verschil van 199 orders van grootteslechts 5 cijfers (met teken)
91
Reële getallen
• Grote negatieve getallen < 0.999 × 1099
• Negatieve getallen tussen 0.999 × 1099 en 0.100 × 1099
• Kleine negatieve getallen tussen 0.100 × 1099 en 0
• Nul (0)
• Kleine positieve getallen tussen 0 en +0.100 × 1099
• Positieve getallen tussen 0.100 × 1099 en 0.999 × 1099
• Grote positieve getallen > +0.999 × 1099
10100 10100 0 1010010100
Negatieveoverloop Onderloop
0
Voorstelbare getallen
Voorstelbare getallen
Positieveoverloop
92
Reële getallen
10100 10100 0 1010010100
Negatieveoverloop
PositieveoverloopOnderloop
0
......
Niet alle getallen!
0.001 × 10990.001 × 1099
Voorstelbare getallen
Voorstelbare getallen
Relatieve afstand constant
93
Invloed van # cijfers
• # cijfers in mantisse (4 i.p.v. 3)nauwkeurigheid (# getallen )
• # cijfers in exponent (3 i.p.v. 2) gebied voorstelbare getallen , zelfde nwk
10100 10100 0 1010010100
101000 101000 0 101000101000
94
Invloed van basis
• basis (=10)
• basis (100 i.p.v. 10)
gebied breidt uit, # getallen = ongewijzigd, nwk
10100 10100 0 1010010100
10200 10200 0 1020010200
95
Reële Getallen
• Kans groot dat een gegeven/resultaat een van de andere getallen is
• Afronden – afronden: dichtste getal dat kan voorgesteld worden
– naar onder (afbreken)
– grensgetallen: statistisch afronden (even/oneven)
x y
?
96
Bewegende komma voorstelling
• Algemeen
X = ± m be
±m = mantisse
b = basis (= vast) = 2 (2, 4, 8, 16, …)
e = exponent
• Bewegende komma voorstelling:
(±, m, e)
97
Bewegende komma voorstelling
• b = r (mantisse en exponent in r-tallig talstelsel)
• Merk op: e ± 1: m over pos. /verschuiven
• Bijvoorbeeld: +0.1234 × 1003 = +0.001234 × 1004
= +12.34 × 1002 = +0.00001234 × 1005
+0.1011 × 162 = +0.00001011 × 163
= +1011.0 × 161 = +0.000000001011 × 164
100 = 102
16 = 24
98
Bewegende komma voorstelling
• mantisse– voorteken, 2-complement, ...– plaats van “.”: vooraan, (achteraan), ...
• exponent– plus M notatie, voorteken
• normalisatie: 1/b | m | < 1• nul
– vaak kleinste exponent en mantisse = 0
99
IEEE Voorstel
• Enkelvoudige nauwkeurigheid
• Dubbele nauwkeurigheid
t exp (8 bits) mantisse (23 bits)
t exp (11 bits) mantisse (52 bits)
Basis = 2, + 127 notatie
Basis = 2, + 1023 notatie
100
IEEE Voorstel
• Genormaliseerd getal (1 |m| < 2)mantisse = 1. … (1 niet in voorstelling!)
• ± Nul• ± Oneindig
– bijv. getal / 0, ...
• NaN (not a number)– bijv. / ,
• Gedenormaliseerd getal
101
Bewerkingen met BKV
• Niet rechtstreeks met voorstelling rekenen– Vooraf opsplitsen, na bewerking: samenvoegen
• Bewerkingen:– in SW– door Processor of Co-Processor
• Voorbeelden in decimaal talstelsel (DRAMA)
– Som en Product (in cursustekst ook Verschil en Quotiënt)
102
DRAMA BKV
1 5 3 1 2 3 4 5 6 7
| Mantisse |
.komma
Exponent (+50 notatie) basis = 100 = 102
Tekencijfer (0 = +; 1 = )
Genormaliseerd als 0.01 | m | < 1Bereik (ongeveer): ]10+100, 10107] [10107, 10+100[
= 0.1234567 × 1003
103
DRAMA BKV
0 0 0 0 0 0 0 0 0 0
4 9 9 9 9 9 9 9 9 9
5 9 9 9 9 9 9 9 9 9
8 8 8 8 8 8 8 8 8 8
Nul
+ Oneindig
Oneindig
NaN
104
DRAMA BKV: Bewerking
1 5 3 1 2 3 4 5 6 7.
1 2 3 4 5 6 7 0 0 0
Vooraf: opsplitsen in aparte registers
0 0 0 0 0 0 0 0 5 3
0 0 0 0 0 0 0 0 0 1
.
105
DRAMA BKV: Bewerking
0 6 1 4 3 2 8 9 2 2.
4 3 2 8 9 2 1 6 3 1
Achteraf: terug samenvoegen in 1 register
0 0 0 0 0 0 0 0 6 1
0 0 0 0 0 0 0 0 0 0
.
Afronden
106
Som
• Voorbeelden
0 58 9999332 + 0 56 9352116
0.9999332 1008 + 0.9352116 1006
0 45 1300000 + 1 44 92000430.1300000 1005 + 0.9200043 1006
107
Som
• Stappen:– Aligneren (exponenten gelijk)– Optellen/Aftrekken– Normaliseren– Afronden
• Bewerkingen:– worden met meer cijfers uitgevoerd
(verhoogde nwk), zie gele cijfers in berekening
108
Som
• Aligneren:– kleinste exponent = grootste– mantisse naar rechts verschuiven
0.9999332000 (1008) + 0.9352116000 (1006)
0.9999332000 (1008) + 0.0000935211 (1008)
0.1300000000 (1005) + 0.9200043000 (1006)
0.1300000000 (1005) + 0.0092000430 (1005)
109
Som
• Optellen / Aftrekken
0. 9999332000 (100) + 0.0000935211 (100)
= 1.0000267211 (100)
0.1300000000 (1005) + 0.0092000430 (1005)
= 0.1207999570 (1005)
110
Som
• Normaliseren (tenzij exp. over/onderloop)– Resultaat > 1 (naar rechts verschuiven)– Resultaat < 0.01 (naar links verschuiven)
1.0000267111 (100)
= 0.0100002671 (100)
0.1207999570 (1005)
111
Som
• Afronden– slechts 7 cijfers behouden voor mantisse
0.0100002671 (100)
0.0100003 (100) 0 59 0100003
0.1207999570 (1005)
0.1208000 (1005) 0 45 1208000
112
Product
• Voorbeeld:
0 58 1284330 × 0 56 0352110
0.1284330 1008 × 0.0352110 1006
• Stappen:– mantisses vermenigvuldigen
+ exponenten optellen– normaliseren– afronden
113
Product
• Mantissen vermenigvuldigen
• Exponenten optellen– plus M-notatie: M aftrekken
m = 0.1284330000 × 0.0352110000 = 0.004522254363
e = 58 + 56 50 = 64
114
Product
• Normaliseren
m = 0.004522254363 0.4522254363
e = 64 63
• Afronden
m = 0.4522254
0 63 4522254
115
Alfanumerieke Informatie
116
Alfanumerieke Informatie
• Symbolen (letters, tekens, …)
• Voorstellen d.m.v. een code– n bit code max. 2n symbolen
• Gestandardiseerde codes:– ASCII – EBCDIC – UNICODE
117
ASCII
• American Standard Code for Information Interchange• 7-bit code• Speciale tekens, hoofdletters, kleine letters, leestekens,
enkele wiskundige tekens
Hex Teken Hex Teken Hex Teken
30 0 40 @ 60 .31 1 41 A 61 a32 2 42 B 62 b...
118
EBCDIC
• Extended Binary Coded Decimal Interchange Code• Op IBM-mainframes• 8-bit code (veel lege plaatsen)• Hoofdletters, kleine letters, leestekens, enkele
wiskundige tekens
Hex Teken Hex Teken Hex Teken
F0 0 80 --- C0 ---F1 1 81 a C1 AF2 2 82 b C2 B...
119
UNICODE
• ASCII: ok voor Engels
• Latin-1: 8-bit uitbreiding voor vreemde letters (á, à, ä, é, …)
• IS 8859-x (code page: 256 letters voor taal)
• UNICODE (16 bit code)– consortium van computer firma’s– ondersteund door Java, Windows NT, ...– max. 65.536 symbolen, ± helft reeds toegekend