Document

advertisement
Hoofdstuk 6
Gegevensvoorstelling
en Berekeningen
1
Inhoud
•
•
•
•
•
•
•
Talstelsels
Getallen in een Computer
Natuurlijke getallen
Gehele getallen
Gebroken getallen
Bewegende komma getallen
Andere gegevens (letters, …)
2
Talstelsels
• Getal = abstract (hoeveelheid)
– Eigenschappen (priem, deelbaar, …)
• Voorstelling = “naam”
– Systematiek: Talstelsel
– Berekeningen in het talstelsel
– Voorbeeld: r-tallig talstel
3
r-tallig talstelsel
• r = grondtal (= vast)
• Elk cijfer: gewicht in functie van de positie
• Zij ci  { 0, 1, …, r-1 }
Voorstelling = cn-1 cn-2 … c1 c0
gewicht
cn-1 rn-1 + cn-2 rn-2 + … + c1 r1 + c0 r0
4
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!5
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
6
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)
7
Natuurlijke getallen
8
Natuurlijke getallen
•
•
•
•
Omzetting Binair  Decimaal
Omzetting Binair  Octaal/Hexadecimaal
BCD voorstelling
Binair rekenen
–
–
–
–
optelling
aftrekking (zie ook gehele getallen)
vermenigvuldiging
deling
9
Omzetting Decimaal  Binair
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
X 
enz.
10
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
11
Omzetting Decimaal  Binair
746
373
186
93
46
23
11
5
2
1
0
1
0
1
0
1
1
1
0
1
1
0
1
1
1
0
1
0
1
0
12
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
X = Xn
Xi = Xi-1 × 2 + cn-i (i=1 .. n)
13
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
14
Octaal / Hexadecimaal
• Compacter dan Binair
• Nauw verwant met Binair
• Gebruik:
– Programmeertalen
– Tonen van inhoud van Geheugen/Register
15
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
16
Omzetting van/naar
Octaal/Hexadecimaal
1
0
1
1
1
1
3
1
0
2
1
0
1
0
5
1
1
E
0
1
0
2 (oct.)
1
0
1
0
A (hex.)
17
Binary Coded Decimal (BCD)
• = decimale voorstelling, cijfers binair
• 4 bits per cijfer
• vb. 1586  0001 0101 1000 0110
• Complexe rekenregels ...
18
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
19
Optellen van binaire getallen
0+0=0
0+1=1
1+0=1
1 + 1 = 10
1 1 1
1 1 1
 overdrachten
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
20
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
OPT
1
0
1
0
HOPT
1
0
1
0
0
0
1
21
Halve Opteller (HOPT)
X Y
0 0
0 1
1 0
1 1
S
0
1
1
0
X Y
T
0
0
0
1
HOPT
T
(overdracht)
X
Y
S (som)
EOF
S
EN
T
22
Opteller (OPT)
Xi Yi
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
Oi
0
1
0
1
0
1
0
1
Xi Yi Ti
Si Ti+1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
OPT
Ti+1
(overdracht)
Xi
Yi
Ti
Si (som)
O
HOPT
OF
S
HOPT
T
S
Ti+1
Si
23
Optelschakeling (parallel)
Xn -1
Xn -2
X2
Yn -1
Yn -2
Y2
X1
X0
Y1
Y0
Overloop!
OPT
Sn-1
OPT
Sn -2
OPT
S2
OPT
S1
HOPT
S0
24
Optelschakeling (serieel)
schuifregisters
X-register
Y-register
Xi
Yi
OPT
S
T
S-register
Ti
OVERLOOP?
OVI, PO7
overdracht
1
Stap = n
Initieel 0 (Stap=0)
25
Verschil van binaire getallen
0–0=0
0–1=—
1–0=1
1–1=0
10 – 1 = 1
 lenen
0 1 1 100 100 1 1 10
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)
26
Verschilschakeling (parallel)
Xn -1
Xn -2
X2
Yn -1
Yn -2
Y2
X1
X0
Y1
Y0
Fout!
AFT
Vn-1
AFT
Vn -2
AFT
V2
AFT
V1
HAFT
V0
27
Vermenigvuldigen
0×0=0
0×1=0
1×0=0
1×1=1
.
11011 (X)
× 01101 (Y)
27
 13
11011
00000
11011
11011
00000
81
27
351
X of 0!
101011111 (XY)
28
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
29
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
P(n) = X  Y
i = 1 .. n
30
Algoritme
Xn-1
...
Q0 = 1
N bit opteller
T
An-1
...
X0
A0
Qn-1
...
Q0
T  0, A  00…0, Q  Y
N keer: (a) Q0 = 1: C, A  A + X
(b) verschuif T, A, Q
= verschuif naar rechts
31
Voorbeeld
X = 11011
Y = 01101
i T A
0 0 00000
1 0 11011
0 01101
2
0 00110
Q
01101
01101 (+)
10110 (»)
11011 (»)
i T
A
3 1 00001
0 10000
4 1 01011
0 10101
5
0 01010
Q
11011
11101
11101
11110
(+)
(»)
(+)
(»)
11111 (»)
XY
Merk Op: indien resultaat n bits: overloop als A  00…0
32
Deling
• Deling = inverse vermenigvuldiging
• Vermenigvuldiging = # { optelling, versch. }
• Deling = # { aftrekking, verschuiving }
33
Gehele Getallen
34
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
35
Gehele Binaire Getallen
• Verschillende wijzen van opdelen:
–
–
–
–
Voorteken
1-complement
2-complement
Plus 2n-1 notatie
36
Voorteken
• Eerste Bit = Tekenbit
Xn-1 Xn-2
...
X0
n-2
X 2
i
i
i. = 0
Tekenbit
0: positief
1: negatief
37
Voorteken
• Bijv. n = 8
00001101
10001101
01111111
11111111
00000000
10000000
(= +13)
(= -13)
(= +127)
(= -127)
(= +0)
(= -0)
38
Voorteken
• Getallenbereik:
[-(2n-1-1) ... -1, -0, +0, +1, … +(2n-1-1)]
• Symmetrisch bereik
• -0 =?= +0
• Rekenregels Complex (+, -)
X = Xn-1 Xn-2 … X1 X met Xn-1 = tekenbit
Gevraagd: Z := X + Y
39
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 }
}
40
Voorteken: Vermenigvuldiging
{ Z= X×Y }
Zn-1 = Xn-1 EOF Yn-1 ;
Zn-2..0 = Xn-2..0 * Yn-2..0 ; /* test op overloop! */
41
2-Complement
• Eerste bit = tekenbit
000…000  0
000…001  1
000…010  2
000…011  3
…
011…110  2n-1 - 2
011…111  2n-1 - 1
100…000
100…001
100…010
100…011
…
111…110
111…111
 - 2n-1
 - 2n-1 + 1
 - 2n-1 + 2
 - 2n-1 + 3
-2
-1
42
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
43
2-Complement
• Bijv. n = 8
00000000 (= +0)
00000001 (= +1)
…
00001101 (= +13)
…
01111111 (= +127)
10000000
(= -128)
10000001 (= -127)
…
10001101 (= -115)
…
11111111 (= -1)
44
2-Complement
• Getallenbereik
[-2n-1, -(2n-1-1) ... -1, +0, +1, … +(2n-1-1)]
• Asymmetrisch bereik!
• 0 heeft slechts 1 voorstelling
• Rekenregels eenvoudig!
• Omrekenformule:
X = Xn-1 (-2n-1) + Xn-2 2n-2 + … + X0
45
2-Complement
• Omrekenformule:
n-1
X < 0:
2n - | X | =  Xi 2i
n-1
i=0
(Xn-1 = 1)
- | X | = - 2n +  Xi 2i
i=0
n-2
= - 2n-1 - 2n-1 + 1 × 2n-1 +  Xi 2i
i=0
• X = Xn-1 (-2n-1) + Xn-2 2n-2 + … + X0
(ook geldig voor positieve getallen: xn-1 = 0)
46
2-Complement & Restklassen
• congruent modulo m
a = 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, … }
...
47
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, xy  t  a  r, b  s, ab  t
• Q, +, × is commutatieve ring
48
2-Complement & Restklassen
Voorbeeld: a  b (mod 5)
0 = { …, -10, -5,
1 = { …, -9, -4,
2 = { …, -8, -3,
3 = { …, -7, -2,
4 = { …, -6, -1,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10, … }
11, … }
12, … }
13, … }
14, … }
+ 0 1 2 3 4
× 0 1 2 3 4
0
1
2
3
4
0
1
2
3
4
0
1
2
3
4
1
2
3
4
0
2
3
4
0
1
3
4
0
1
2
4
0
1
2
3
0
0
0
0
0
0
1
2
3
4
0
2
4
1
3
0
3
1
4
2
0
4
3
2
1
49
2-Complement & Restklassen
Restklassen modulo 2n
0
= { …, -2n+1, -2n,
1
= { …,
-2n+1,
2
= { …,
-2n+2,
0,
1,
2,
Plus-conventie
2n, 2n+1 … }
2n+1, … }
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 = { …,
2n -1 = { …,
2-Complement
-2, 2n -2,
-1, 2n -1,
2n+1 -2, … }
2n+1 -1, … }
50
2-Complement
• Besluit:
– Apparatuur werkt met restklassen
– Resultaat steeds modulo 2n
– d.i. alleen laatste n bits behouden
51
Bewerkingen met 2-complement
• Inverteren
• Som
• Verschil
X - Y = X + (-Y)
• Product
• Aanpassing van woordlengte
52
Inverteren
• X  -X
• X negatief: 2n - | X |
2n = (2n - 1 + 1)
2n - | X | = 2n - 1 - | X | + 1
= 111…11 - |X| + 1
= (1-Xn-1) (1-Xn-2) … (1-X0) + 1
• Bijgevolg: bits omkeren en 1 bijtellen
53
Inverteren
• Voorbeeld: (n = 8)
01100110 (132)
10011001 (omkeren)
+
1
10011010 (-132)
• Merk op:
ook geldig -X  +X
10011010
(-132)
01100101 (omkeren)
+
1
01100110
(+132)
54
Inverteren
• Schakeling: n × NIET, n × HOPT
X=
xn-1
x2
x1
x0
1
HOPT
-X =Y= yn-1
...
HOPT
HOPT
y2
y1
HOPT
y0
55
Som
Xn
Xn -1
X2
X1
X0
Yn
Yn -1
Y2
Y1
Y0
OPT
Sn
OPT
Sn -1
OPT
S2
OPT
S1
HOPT
S0
56
Som
• Voorbeelden (n = 8)
00010110 (22)
+ 11100111 (-25)
11111101 (-3)
00011001 (25)
+ 11101010 (-22)
100000011 (3)
11100111 (-25)
+ 11110101 (-11)
111011100 (-36)
57
Som
• Overloop:
x, y > 0
x, y < 0


x+y < 0
x+y > 0
• Voorbeelden: (n=8)
01010110
(86)
10010111 (-105)
+ 01000001
(65)
+ 10010100 (-108)
10010111 (-105)
100101011 (43)
58
Som
• Overloopdetectie = eenvoudig
– laatste 2 overdrachten gelijk: OK
– anders: OVERLOOP
• Voorbeelden: (n=8)
01000000
01010110 (86)
+ 01000001 (65)
10010111 (-105)
10010100 (overdr.)
10010111 (-105)
+ 10010100 (-108)
100101011
(43)
59
Som
• Voorbeelden (n = 8)
00000110
00010110
+ 11100111
11111101
11100111
11100111
(22)
(-25) + 11110101
111011100
(-3)
11111000
00011001
+ 11101010
100000011
(25)
(-22)
(3)
overdrachten
(-25)
(-11)
(-36)
60
Optelling
Xn
Xn -1
X2
X1
X0
Yn
Yn -1
Y2
Y1
Y0
OPT
OPT
OPT
OPT
HOPT
EOF
Sn
Overloop (indien 1)
Sn -1
S2
S1
S0
61
Product
11110011 (-13)
× 00000111 (7)
11110011
11110011
11110011
11010100101  10100101 (-91)
• Overloop Mogelijk!
• Algoritme  van vermenigv. natuurlijke getallen
62
Aanpassing woordlengte
• Aanpassen lengte v/d voorstelling
– Kopiëren van tekenbit
• Voorbeeld: 8-bit vs. 16-bit
00011010 (+26)
0000000000001010 (+26)
11100110 (-26)
1111111111100110 (-26)
63
Vergelijking: 10-complement
(Decimaal)
• Voorbeeld: 4 decimale cijfers
• positief: 0000 … 4999
• negatief: 104 - | X |
-1  9999 = 10000 - 1
-2  9998
-4000  6000
-5000  5000
64
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) !!!
65
1-Complement
• Positief: 1e bit = 0,
overige zie natuurlijke getallen
• Negatief: 2n - 1 - | X |
• Getallenbereik
[-(2n-1-1) ... -1, -0, +0, +1, … +(2n-1-1)]
• Verouderd (niet meer gebruikt)
66
Plus
000…000
000…001
000…010
000…011
…
011…110
011…111
n-1
2
 - 2n-1
 - 2n-1 + 1
 - 2n-1 + 2
 - 2n-1 + 3
-2
-1
Notatie
100…000
100…001
100…010
100…011
…
111…110
111…111
0
1
2
3
 2n-1 - 2
 2n-1 - 1
67
Plus
n-1
2
• Getallenbereik
[-2n-1, -(2n-1-1) ... -1, +0, +1, … +(2n-1-1)]
• Asymmetrisch bereik!
• 0 heeft slechts 1 voorstelling
• = 2-complement met omgekeerde tekenbit
• Voordeel: positief getal > negatief getal
68
Vergelijking (8-bit getallen)
Dec.
0
1
2
5
10
100
126
127
128
Voorteken
00000000
00000001
00000010
00000101
00001010
01100100
01111110
01111111
onbest.
1-Compl.
00000000
00000001
00000010
00000101
00001010
01100100
01111110
01111111
onbest.
2-Compl.
00000000
00000001
00000010
00000101
00001010
01100100
01111110
01111111
onbest.
Plus 128
10000000
10000001
10000010
10000101
10001010
11100100
11111110
11111111
onbest.
69
Vergelijking (8-bit getallen)
Dec.
-0
-1
-2
-5
-10
-100
-126
-127
-128
Voorteken
10000000
10000001
10000010
10000101
10001010
11100100
11111110
11111111
onbest.
1-Compl.
11111111
11111110
11111101
11111010
11110101
10011011
10000001
10000000
onbest.
2-Compl.
onbest.
11111111
11111110
11111011
11110110
10011100
10000010
10000001
10000000
Plus 128
onbest.
01111111
01111110
01111100
01110110
00011100
00000010
00000001
00000000
70
Gebroken Getallen
71
Gebroken getallen
• Gewichten met negatieve exponent
Voorstelling = ck … c1 c0 . c-1 c-2 … c-m
c k rk + … + c 1 r 1 + c 0 r 0 +
c-1 r-1 + c-2 r-2 + … +c-m r-m
72
Gebroken Getallen
• Omzetting Decimaal  Binair
• Omzetting Binair  Decimaal
• Gebroken getallen in de computer
– Vaste Komma Voorstelling
– Bewegende Komma Voorstelling
73
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)
74
Omzetting Binair  Decimaal
0.
0
0
1
0
1
+
+
+
+
+
+
5
32
5
16
5
8
1
4
1
2
0
5
32
5
16
5
8
5
4
1
2
1
0
0
75
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 ?
enz ...
c-2 = 1
x2< 1 ?
c-2 = 0
76
Omzetting Decimaal  Binair
0.158
0.316
0.632
1.264
0.528
1.056
0.112
...
0.
0
0
1
0
1
0
77
Vaste komma voorstelling
• Komma op vaste plaats “verondersteld”
• Bijvoorbeeld :
01101110
“.” na 5de bit 
01101.110 (13.75)
“.” na 3de bit 
011.01110 (3.4375)
78
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
79
Vaste komma voorstelling
• n-bit voorstelling: 2n mogelijke getallen
• per bit extra na “.”:
– bereik gehalveerd
– nauwkeurigheid verdubbeld
...
...
bereik
...
...
...
...
0
80
Vaste komma voorstelling
• Voorbeeld: n=8, p bits na “.”, 2-compl.
p=0
p=1
p=2
p=3
…
bereik = [-128, 127]
afstand = 1
bereik = [-64.0, 63,5] afstand = 0.5
bereik = [-32.0, 31.75] afstand = 0.25
bereik = [-16.0, 15.975] afstand = 0.125
81
Vaste komma voorstelling
• Bewerkingen
– Som/Verschil
– Product/Quotiënt
82
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
83
VKV: Product/Quotiënt
• Product
# cijfers na “.” =  # cijfers na “.”
00010.010
× 000001.10
011.11110
00010010 × 2-3
× 00000110 × 2-2
01111110 × 2-5
3+2 = 5
• Quotiënt: # extra cijfers na “.” =
#cijfers na “.” (deeltal) - #cijfers na “.” (deler)
84
Vaste komma voorstelling
• Alleen als bereik van getallen gekend
• Anders, snel overloop!
• Vandaar: bewegende komma voorstelling
85
Bewegende komma voorstelling
86
Bewegende komma voorstelling
• Het Principe
• Bewegende komma voorstelling
• Bewerkingen
– Optelling
– Vermenigvuldiging
87
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
88
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
89
Eigenschappen
• Voorbeeld (decimaal talstelsel):
– 3 cijfers (+ teken) voor mantisse
– 2 cijfers (+ teken) voor exponent
• Bereik (positieve getallen)
+0.100 × 10-99 tot +0.999 × 10+99
= verschil van 199 orders van grootte
slechts 5 cijfers (met teken)
90
Reële getallen
Negatieve Voorstelbare
getallen
overloop
-10100
Onderloop  0
-10-100
0
Voorstelbare
getallen
+10-100
Positieve
overloop
+10100
• Grote negatieve getallen < -0.999 × 1099
• Negatieve getallen tussen -0.999 × 1099 en -0.100 × 10-99
• Kleine negatieve getallen tussen -0.100 × 10-99 en 0
• Nul (0)
• Kleine positieve getallen tussen 0 en +0.100 × 10-99
• Positieve getallen tussen +0.100 × 10-99 en +0.999 × 1099
• Grote positieve getallen > +0.999 × 1099
91
Reële getallen
Negatieve Voorstelbare
getallen
overloop
-10100
Onderloop  0
-10-100
0
Voorstelbare
getallen
+10-100
Positieve
overloop
+10100
Niet alle getallen!
...
...
0.001 × 10-99
0.001 × 1099
Relatieve afstand  constant
92
Invloed van # cijfers
• # cijfers in mantisse  (4 i.p.v. 3)
nauwkeurigheid  (# getallen  )
-10100
-10-100
0
+10-100
+10100
• # cijfers in exponent  (3 i.p.v. 2)
gebied voorstelbare getallen , zelfde nwk
-101000
-10-1000 0+10-1000
+101000
93
Invloed van basis
• basis (=10)
-10100
-10-100
0
+10-100
+10100
• basis  (100 i.p.v. 10)
gebied breidt uit, # getallen = ongewijzigd, nwk 
-10200
-10-200 0 +10-200
+10200
94
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
95
Bewegende komma voorstelling
• Algemeen
X = ± m be
±m = mantisse
b = basis (= vast) = 2 (2, 4, 8, 16, …)
e = exponent
• Bewegende komma voorstelling:
(±,
m, e)
96
Bewegende komma voorstelling
• b = r (mantisse en exponent in r-tallig talstelsel)
• Merk op: e ± 1:
m over  pos. /verschuiven
100 = 102
• Bijvoorbeeld:

=

=
+0.1234 × 1003 = +0.001234 × 1004
+12.34 × 1002 = +0.00001234 × 1005 16 = 24
+0.1011 × 162 = +0.00001011 × 163
+1011.0 × 161 = +0.000000001011 × 164
97
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
98
IEEE Voorstel
• Enkelvoudige nauwkeurigheid
t
exp (8 bits)
mantisse (23 bits)
Basis = 2, + 127 notatie
• Dubbele nauwkeurigheid
t
exp (11 bits)
mantisse (52 bits)
Basis = 2, + 1023 notatie
99
IEEE Voorstel
• Genormaliseerd getal
mantisse = 1. …
(1  |m| < 2)
(1 niet in voorstelling!)
• ± Nul
• ± Oneindig
– bijv. getal / 0, ...
• NaN (not a number)
– bijv.  / ,
• Gedenormaliseerd getal
100
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)
101
DRAMA BKV
komma
.
1531234567
= -0.1234567 × 1003
| Mantisse |
Exponent (+50 notatie) basis = 100 = 102
Tekencijfer (0 = +; 1 = -)
Genormaliseerd als 0.01  | m | < 1
Bereik (ongeveer): ]-10+100, 10-107]  [10-107, 10+100[
102
DRAMA BKV
0000000000
Nul
4999999999
+ Oneindig
5999999999
- Oneindig
8888888888
NaN
103
DRAMA BKV: Bewerking
.
1531234567
Vooraf: opsplitsen in
aparte registers
.1 2 3 4 5 6 7 0 0 0
0000000053
0000000001
104
DRAMA BKV: Bewerking
.
0614328922
Achteraf: terug samenvoegen
in 1 register
Afronden
.4 3 2 8 9 2 1 6 3 1
0000000061
0000000000
105
Som
• Voorbeelden
0 58 9999332 + 0 56 9352116
0.9999332 1008 + 0.9352116 1006
0 45 1300000 + 1 44 9200043
0.1300000 100-5 + -0.9200043 100-6
106
Som
• Stappen:
–
–
–
–
Aligneren (exponenten gelijk)
Optellen/Aftrekken
Normaliseren
Afronden
• Bewerkingen:
– worden met meer cijfers uitgevoerd
(verhoogde nwk), zie gele cijfers in berekening
107
Som
• Aligneren:
– kleinste exponent  = grootste
– mantisse naar rechts verschuiven
0.9999332000 (1008) +
0.9352116000 (1006)
0.9999332000 (1008) +
0.0000935211 (1008)
0.1300000000 (100-5) + -0.9200043000 (100-6)
0.1300000000 (100-5) + -0.0092000430 (100-5)
108
Som
• Optellen / Aftrekken
0. 9999332000 (1008) + 0.0000935211 (1008)
= 1.0000267211 (1008)
0.1300000000 (100-5) + -0.0092000430 (100-5)
= 0.1207999570 (100-5)
109
Som
• Normaliseren (tenzij exp. over/onderloop)
– Resultaat > 1
(naar rechts verschuiven)
– Resultaat < 0.01 (naar links verschuiven)
1.0000267111 (1008)
= 0.0100002671 (1009)
0.1207999570 (100-5)
110
Som
• Afronden
– slechts 7 cijfers behouden voor mantisse
0.0100002671 (1009)
0.0100003 (1009)
0 59 0100003
0.1207999570 (100-5)
0.1208000 (100-5)
0 45 1208000
111
Product
• Voorbeeld:
0 58 1284330 × 0 56 0352110
0.1284330 1008 × 0.0352110 1006
• Stappen:
– mantisses vermenigvuldigen
+ exponenten optellen
– normaliseren
– afronden
112
Product
• Mantissen vermenigvuldigen
• Exponenten optellen
– plus M-notatie: M aftrekken
m = 0.1284330000 × 0.0352110000
= 0.004522254363
e = 58 + 56 - 50 = 64
113
Product
• Normaliseren
m = 0.004522254363  0.4522254363
e = 64
63
• Afronden
m = 0.4522254
0 63 4522254
114
Alfanumerieke Informatie
115
Alfanumerieke Informatie
• Symbolen (letters, tekens, …)
• Voorstellen d.m.v. een code
– n bit code  max. 2n symbolen
• Gestandardiseerde codes:
– ASCII
– EBCDIC
– UNICODE
116
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
a
32
2
42 B
62
b
...
117
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
A
F2
2
82 b
C2
B
118
...
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
119
Download