Gegevensvoorstelling en Berekeningen Hoofdstuk 6 Gegevensvoorstelling en Berekeningen
Inhoud Talstelsels Getallen in een Computer Natuurlijke getallen Gehele getallen Gebroken getallen Bewegende komma getallen Andere gegevens (letters, …)
Talstelsels Getal = abstract (hoeveelheid) Voorstelling = “naam” Eigenschappen (priem, deelbaar, …) Voorstelling = “naam” Systematiek: Talstelsel Berekeningen in het talstelsel Voorbeeld: r-tallig talstel
cn-1 rn-1 + cn-2 rn-2 + … + c1 r1 + c0 r0 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
Voorbeelden Decimaal r = 10, c {0, 1, …, 9} Binair r = 2, c {0, 1} 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!
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
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)
Natuurlijke getallen
Natuurlijke getallen Omzetting Binair Decimaal Omzetting Binair Octaal/Hexadecimaal BCD voorstelling Binair rekenen optelling aftrekking (zie ook gehele getallen) vermenigvuldiging deling
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.
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
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
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
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
Octaal / Hexadecimaal Compacter dan Binair Nauw verwant met Binair Gebruik: Programmeertalen Tonen van inhoud van Geheugen/Register
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!
Omzetting van/naar Octaal/Hexadecimaal 1 0 1 1 1 0 1 0 1 0 1 3 5 2 (oct.) 2 E A (hex.)
Binary Coded Decimal (BCD) = decimale voorstelling, cijfers binair 4 bits per cijfer vb. 1586 0001 0101 1000 0110 Complexe rekenregels ...
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
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
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
Halve Opteller (HOPT) X Y S T 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 X Y T S (som) T (overdracht) X Y S T 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 EN EOF X Y S T
Opteller (OPT) Xi Yi Oi Si Ti+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 Xi Yi Ti Si (som) Ti+1 (overdracht) 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 HOPT Xi Yi Ti OF Ti+1 Si O T S
Optelschakeling (parallel) Xn -1 Xn -2 X2 X1 X0 OPT OPT OPT OPT HOPT Yn -1 Yn -2 Y2 Y1 Y0 Overloop! Sn-1 Sn -2 S2 S1 S0
Optelschakeling (serieel) schuifregisters Xi X-register S S-register OPT Yi T Y-register Ti overdracht 1 OVERLOOP? OVI, PO7 Stap = n Initieel 0 (Stap=0)
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 0 1 1 10 lenen 0 10
Verschilschakeling (parallel) Xn -1 Xn -2 X2 X1 X0 AFT AFT AFT AFT HAFT Yn -1 Yn -2 Y2 Y1 Y0 Fout! Vn-1 Vn -2 V2 V1 V0
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!
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
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
Algoritme Xn-1 X0 ... Q0 = 1 N bit opteller T An-1 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
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
Deling Deling = inverse vermenigvuldiging Vermenigvuldiging = # { optelling, versch. } Deling = # { aftrekking, verschuiving }
Gehele Getallen
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
Gehele Binaire Getallen Verschillende wijzen van opdelen: Voorteken 1-complement 2-complement Plus 2n-1 notatie
Xi 2i . Voorteken Eerste Bit = Tekenbit Tekenbit 0: positief Xn-2 X0 ... Xn-1 Xi 2i . i = 0 n-2 Tekenbit 0: positief 1: negatief
Voorteken Bijv. n = 8 00001101 (= +13) 10001101 (= -13) 00001101 (= +13) 10001101 (= -13) 01111111 (= +127) 11111111 (= -127) 00000000 (= +0) 10000000 (= -0)
Voorteken X = Xn-1 Xn-2 … X1 X met Xn-1 = tekenbit 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
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 } }
Voorteken: Vermenigvuldiging { Z = X × Y } Zn-1 = Xn-1 EOF Yn-1 ; Zn-2..0 = Xn-2..0 * Yn-2..0 ; /* test op overloop! */
2-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
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
2-Complement 10000000 (= -128) Bijv. n = 8 00000000 (= +0) 00000000 (= +0) 00000001 (= +1) … 00001101 (= +13) … 01111111 (= +127) 10000000 (= -128) 10000001 (= -127) … 10001101 (= -115) … 11111111 (= -1)
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
2-Complement = - 2n-1 - 2n-1 + 1 × 2n-1 + Xi 2i 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) n-1 i = 0 n-1 i = 0 n-2 i = 0
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, … } ...
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
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 4 0 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
2-Complement & Restklassen Restklassen 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
2-Complement Besluit: Apparatuur werkt met restklassen Resultaat steeds modulo 2n d.i. alleen laatste n bits behouden
Bewerkingen met 2-complement Inverteren Som Verschil X - Y = X + (-Y) Product Aanpassing van woordlengte
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
Inverteren Voorbeeld: (n = 8) 01100110 (132) 10011001 (omkeren) + 1 01100110 (132) 10011001 (omkeren) + 1 10011010 (-132) Merk op: ook geldig -X +X 10011010 (-132) 01100101 (omkeren) + 1 01100110 (+132)
... Inverteren Schakeling: n × NIET, n × HOPT X = xn-1 x2 x1 x0 -X =Y= yn-1 y2 y1 y0
Som Xn Xn -1 X2 X1 X0 Yn Yn -1 Y2 Y1 Y0 Sn Sn -1 S2 S1 S0 OPT OPT OPT HOPT Yn Yn -1 Y2 Y1 Y0 Sn Sn -1 S2 S1 S0
Som Voorbeelden (n = 8) 00010110 (22) + 11100111 (-25) 11111101 (-3) 00011001 (25) + 11101010 (-22) 100000011 (3) 11100111 (-25) + 11110101 (-11) 111011100 (-36)
Som Overloop: Voorbeelden: (n=8) 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)
Som Overloopdetectie = eenvoudig Voorbeelden: (n=8) 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)
Som Voorbeelden (n = 8) 00000110 11100111 00010110 (22) 11100111 (-25) 00010110 (22) + 11100111 (-25) 11111101 (-3) 11111000 00011001 (25) + 11101010 (-22) 100000011 (3) 11100111 11100111 (-25) + 11110101 (-11) 111011100 (-36) overdrachten
Optelling Xn Xn -1 X2 X1 X0 Yn Yn -1 Y2 Y1 Y0 EOF Sn Sn -1 S2 S1 S0 HOPT Yn Yn -1 Y2 Y1 Y0 EOF Sn Sn -1 S2 S1 S0 Overloop (indien 1)
Product 11110011 (-13) × 00000111 (7) 11110011 11010100101 10100101 (-91) Overloop Mogelijk! Algoritme van vermenigv. natuurlijke getallen
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)
Vergelijking: 10-complement (Decimaal) Voorbeeld: 4 decimale cijfers positief: 0000 … 4999 negatief: 104 - | X | -1 9999 = 10000 - 1 -2 9998 -4000 6000 -5000 5000
10-Complement Som 0500 + 9660 = 10160 0160 (500) + (-340) = (160) (500) + (-340) = (160) Product 0120 9960 = 1495200 5200 (120) (-40) = (-4800) Overloop mogelijk! 3500 + 2000 = 5500 (3500) + (2000) = (-4500) !!!
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)
Plus 2n-1 Notatie 000…000 000…001 000…010 000…011 … 011…110 011…111 - 2n-1 - 2n-1 + 1 - 2n-1 + 2 - 2n-1 + 3 - 2 - 1 100…000 100…001 100…010 100…011 … 111…110 111…111 0 1 2 3 2n-1 - 2 2n-1 - 1
Plus 2n-1 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
Vergelijking (8-bit getallen)
Vergelijking (8-bit getallen)
Gebroken Getallen
Gebroken getallen ck rk + … + c1 r1 + c0 r0 + Gewichten met negatieve exponent Voorstelling = ck … c1 c0 . c-1 c-2 … c-m ck rk + … + c1 r1 + c0 r0 + c-1 r-1 + c-2 r-2 + … +c-m r-m
Gebroken Getallen Omzetting Decimaal Binair Omzetting Binair Decimaal Gebroken getallen in de computer Vaste Komma Voorstelling Bewegende Komma Voorstelling
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)
Omzetting Binair Decimaal 0. 0 0 1 0 1 0 5 5 5 1 1 0 32 16 8 4 2 5 5 5 5 1 1 0 32 16 8 4 2 + + + + + + 2 2 2 2 2 2
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 ...
Omzetting Decimaal Binair 0.158 0. 0.316 0 0.632 0 1.264 1 0.528 0 1.056 1 0.112 0 ...
Vaste komma voorstelling Komma op vaste plaats “verondersteld” Bijvoorbeeld : 01101110 “.” na 5de bit 01101.110 (13.75) “.” na 3de bit 011.01110 (3.4375)
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
Vaste komma voorstelling n-bit voorstelling: 2n mogelijke getallen per bit extra na “.”: bereik gehalveerd nauwkeurigheid verdubbeld ... bereik ... ...
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 …
Vaste komma voorstelling Bewerkingen Som/Verschil Product/Quotiënt
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
VKV: Product/Quotiënt # 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)
Vaste komma voorstelling Alleen als bereik van getallen gekend Anders, snel overloop! Vandaar: bewegende komma voorstelling
Bewegende komma voorstelling
Bewegende komma voorstelling Het Principe Bewegende komma voorstelling Bewerkingen Optelling Vermenigvuldiging
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
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
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)
Reële getallen Negatieve overloop Voorstelbare getallen Positieve overloop Onderloop 0 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 -10100 -10-100 +10100 +10-100
Reële getallen ... Niet alle getallen! Negatieve overloop Voorstelbare getallen Voorstelbare getallen Positieve overloop Onderloop 0 -10100 -10-100 +10100 +10-100 ... Niet alle getallen! 0.001 × 1099 0.001 × 10-99 Relatieve afstand constant
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 -10-100 +10-100 +10100 -101000 -10-1000 +10-1000 +101000
Invloed van basis basis (=10) basis (100 i.p.v. 10) gebied breidt uit, # getallen = ongewijzigd, nwk -10100 -10-100 +10-100 +10100 -10200 -10-200 +10-200 +10200
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
Bewegende komma voorstelling Algemeen X = ± m be ±m = mantisse b = basis (= vast) = 2 (2, 4, 8, 16, …) e = exponent Bewegende komma voorstelling: (±, m, e)
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
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
IEEE Voorstel Enkelvoudige nauwkeurigheid Dubbele nauwkeurigheid t exp (8 bits) mantisse (23 bits) Basis = 2, + 127 notatie t exp (11 bits) mantisse (52 bits) Basis = 2, + 1023 notatie
IEEE Voorstel Genormaliseerd getal (1 |m| < 2) ± Nul ± Oneindig mantisse = 1. … (1 niet in voorstelling!) ± Nul ± Oneindig bijv. getal / 0, ... NaN (not a number) bijv. / , Gedenormaliseerd getal
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)
DRAMA BKV . 1 5 3 1 2 3 4 5 6 7 = -0.1234567 × 1003 komma | 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[
DRAMA BKV 0 0 0 0 0 0 0 0 0 0 Nul 4 9 9 9 9 9 9 9 9 9 + Oneindig 5 9 9 9 9 9 9 9 9 9 - Oneindig 8 8 8 8 8 8 8 8 8 8 NaN
DRAMA BKV: Bewerking . Vooraf: opsplitsen in aparte registers 1 5 3 1 2 3 4 5 6 7 . 1 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 0 0 5 3 0 0 0 0 0 0 0 0 0 1
DRAMA BKV: Bewerking . Achteraf: terug samenvoegen in 1 register 0 6 1 4 3 2 8 9 2 2 Afronden . 4 3 2 8 9 2 1 6 3 1 0 0 0 0 0 0 0 0 6 1 0 0 0 0 0 0 0 0 0 0
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
Som Stappen: Bewerkingen: Aligneren (exponenten gelijk) Optellen/Aftrekken Normaliseren Afronden Bewerkingen: worden met meer cijfers uitgevoerd (verhoogde nwk), zie gele cijfers in berekening
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)
Som Optellen / Aftrekken 0. 9999332000 (1008) + 0.0000935211 (1008) = 1.0000267211 (1008) 0.1300000000 (100-5) + -0.0092000430 (100-5) = 0.1207999570 (100-5)
Som Normaliseren (tenzij exp. over/onderloop) 1.0000267111 (1008) Resultaat > 1 (naar rechts verschuiven) Resultaat < 0.01 (naar links verschuiven) 1.0000267111 (1008) = 0.0100002671 (1009) 0.1207999570 (100-5)
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
Product Voorbeeld: 0 58 1284330 × 0 56 0352110 0.1284330 1008 × 0.0352110 1006 Stappen: mantisses vermenigvuldigen + exponenten optellen normaliseren afronden
Product Mantissen vermenigvuldigen Exponenten optellen plus M-notatie: M aftrekken m = 0.1284330000 × 0.0352110000 = 0.004522254363 e = 58 + 56 - 50 = 64
Product Normaliseren m = 0.004522254363 0.4522254363 e = 64 63 Afronden m = 0.4522254 0 63 4522254
Alfanumerieke Informatie
Alfanumerieke Informatie Symbolen (letters, tekens, …) Voorstellen d.m.v. een code n bit code max. 2n symbolen Gestandardiseerde codes: ASCII EBCDIC UNICODE
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 ...
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 ...
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