Gegevensvoorstelling en berekeningen Hoofdstuk 6 Gegevensvoorstelling en berekeningen
Inhoud Talstelsels Getallen in een Computer Natuurlijke getallen Gehele getallen Gebroken getallen Vaste komma getallen Bewegende komma getallen Andere gegevens (letters, …)
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 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 1 0 1 1 1 0 1 0 1 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
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 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
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
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 11011 (X) 27 1 × 1 = 1 . 11011 (X) 27 × 01101 (Y) 13 11011 81 00000 27 11011 351 11011 00000 101011111 (XY) X of 0!
Algoritme X Y Xn-1 X0 ... N bit opteller T An-1 A0 ... Qn-1 Q0 ... T 0, A 00…0, Q Y N keer: (a) Q0 = 1: (T,A) A + X (b) verschuif T, A, Q = verschuif naar rechts
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 (verhoogde notatie)
Voorteken 00001101 (= +13) 10001101 (= -13) 01111111 (= +127) Bijv. n = 8 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 } }
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
Bewerkingen met 2-complement Inverteren Som Verschil X - Y = X + (-Y) Product Aanpassing van woordlengte
Optelling Overloop (indien 1) Xn Xn -1 X2 X1 X0 Yn Yn -1 Y2 Y1 Y0 HOPT Yn Yn -1 Y2 Y1 Y0 EOF Sn Sn -1 S2 S1 S0 Overloop (indien 1)
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 - 2n-1 - 2n-1 + 1 - 2n-1 + 2 - 2n-1 + 3 - 2 - 1 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
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
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
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 n-bit voorstelling: 2n mogelijke getallen per bit extra na “.”: bereik gehalveerd nauwkeurigheid verdubbeld ... bereik ... ...
Vaste komma voorstelling Bewerkingen Som/Verschil “.” aligneren Product/Quotiënt
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
Reële getallen -10100 -10-100 +10100 +10-100 Negatieve overloop Voorstelbare getallen Voorstelbare getallen Positieve overloop Onderloop 0 -10100 -10-100 +10100 +10-100 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
Reële getallen ... Niet alle getallen! Relatieve afstand constant 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
Bewegende komma voorstelling Algemeen X = ± m be ±m = mantisse b = basis (= vast) = 2 (2, 4, 8, 16, …) e = exponent Bewegende komma voorstelling: (±, m, e)
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
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 Product Verschil Quotiënt
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
EINDE