Hoofdstuk 6 Gegevensvoorstelling en Berekeningen 1 Inhoud Talstelsels
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 … c 1 c 0 gewicht cn-1 rn-1 + cn-2 rn-2 + … + c 1 r 1 + c 0 r 0 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 …, F} 4 D 3 r = 16, c {0, . . . , 9, A, 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 … c 1 c 0 met ci {0, 1} X 0 = X = cn-1 2 n-1 + … + c 1 21 + c 0 20 X 0 = even: c 0 = 0 X 0 = oneven: c 0 = 1 X 1 = X 0 div 2 = cn-1 2 n-2 + cn-2 2 n-3 + … + c 1 20 X 1 = even: c 1 = 0 X 1 = oneven: c 1 = 1 X enz. 10
Omzetting Decimaal Binair X cn-1 cn-2 … c 1 c 0 met ci {0, 1} X 0 = 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 1 1 0 1 0 12
Omzetting Binair Decimaal X cn-1 … c 1 c 0 met ci {0, 1} X = cn-1 2 n-1 + cn-2 2 n-2 … + c 1 21 + c 0 20 = (cn-1 2 + cn-2 ) 2 n-2 + … + c 1 21 + c 0 20 = ((. . . (( 0 + cn-1) 2 + cn-2) 2 + … + c 1) 2 + c 0 X 0 = 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 2 5 11 23 × 2 × 2 46 92 186 372 746 × 2 22 × 2 10 × 2 4 × 2 2 × 2 0 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 16 m + … + h 1 161 + h 0 160 hi = ci 3 23 + ci 2 22 + ci 1 21 + ci 0 20 en 16 = 24 • Groeperen van RECHTS naar LINKS! 16
Omzetting van/naar Octaal/Hexadecimaal 1 0 1 1 3 1 0 2 1 0 1 5 1 1 E 0 0 2 (oct. ) 1 0 1 A 0 (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 10 n-1 x < 10 n en 2 b-1 x < 2 b dus 10 n 2 b bijgevolg b log 2 10 n = n log 2 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 overdrachten 1 0 0 1 1 + 1 0 1 1 1 0 0 1 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 0 0 1 1 1 0 0 1 1 0 OPT 1 0 HOPT 1 0 0 0 1 21
Halve Opteller (HOPT) X Y 0 0 0 1 1 X Y S T 0 0 1 HOPT T (overdracht) X Y S (som) EOF S EN T 22
Opteller (OPT) Xi Yi Oi Si Ti+1 0 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 0 1 0 1 1 1 Xi Yi T i 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 X 1 X 0 Yn -1 Yn -2 Y 1 Y 0 Overloop! OPT Sn-1 OPT Sn -2 OPT S 1 HOPT S 0 24
Optelschakeling (serieel) schuifregisters X-register Y-register Xi Yi OPT S T S-register Ti OVERLOOP? OVI, PO 7 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 1 1 10 1 0 0 1 1 0 0 0 1 1 – 0 0 1 1 1 0 0 1 0 1 1 1 0 1 Merk Op: grootste - kleinste (anders negatief) 26
Verschilschakeling (parallel) Xn -1 Xn -2 X 1 X 0 Yn -1 Yn -2 Y 1 Y 0 Fout! AFT Vn-1 AFT Vn -2 AFT V 1 HAFT V 0 27
Vermenigvuldigen 0× 0=0 0× 1=0 1× 0=0 1× 1=1. 11011 (X) × 01101 (Y) 11011 00000 27 13 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 2 i = X × 2 n × Yi 2 i 2 -n = (X Yi 2 n) 2 i-n = (X Y 0 2 n ) 2 -n + (X Y 1 2 n ) 21 -n + … + (X Yn-1 2 n ) 2 -1 29
Efficiënte Implementatie (2) X Y = (X Y 0 2 n ) 2 -n + (X Y 1 2 n ) 21 -n + … + (X Yn-1 2 n ) 2 -1 = ((X Y 0 2 n ) 2 -1 + (X Y 1 2 n )) 21 -n + … + (X Yn-1 2 n ) 2 -1 = (… (((0 + X Y 0 2 n ) 2 -1 + X Y 1 2 n ) 2 -1) + … + X Yn-1 2 n ) 2 -1 P(0) = 0 P(i) = (P(i-1) + X Yi-1 2 n ) 2 -1 P(n) = X Y i = 1. . n 30
Algoritme Xn-1 . . . Q 0 = 1 N bit opteller T An-1 . . . = verschuif naar rechts X 0 A 0 Qn-1 . . . Q 0 T 0, A 00… 0, Q Y N keer: (a) Q 0 = 1: C, A A + X (b) verschuif T, A, Q 31
Voorbeeld X = 11011 Y = 01101 i T A 0 0 00000 1 0 11011 0 01101 2 0 00110 Q 01101 (+) 10110 (» ) 11011 (» ) i T A 3 1 00001 0 10000 4 1 01011 0 10101 5 0 01010 Q 11011 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 • Natuurlijke getallen: [0, 2 n - 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 2 n-1 notatie 36
Voorteken • Eerste Bit = Tekenbit Xn-1 Xn-2 . . . X 0 n-2 X 2 i. = 0 Tekenbit 0: positief 1: negatief i i 37
Voorteken • Bijv. n = 8 00001101 10001101 01111111 0000 10000000 (= +13) (= -13) (= +127) (= -127) (= +0) (= -0) 38
Voorteken • Getallenbereik: [-(2 n-1 -1). . . -1, -0, +1, … +(2 n-1 -1)] • Symmetrisch bereik • -0 =? = +0 • Rekenregels Complex (+, -) X = Xn-1 Xn-2 … X 1 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 2 n-1 - 2 011… 111 2 n-1 - 1 100… 000 100… 001 100… 010 100… 011 … 111… 110 111… 111 - 2 n-1 + 2 - 2 n-1 + 3 -2 -1 42
2 -Complement • Positief: 1 e bit = 0, overige zie natuurlijke getallen • Negatief: 2 n - | X | -1 2 n - 1 = 111… 111 -2 2 n - 2 = 111… 110 -2 n-1 2 n - 2 n-1 = 100… 000 43
2 -Complement • Bijv. n = 8 0000 (= +0) 00000001 (= +1) … 00001101 (= +13) … 01111111 (= +127) 10000000 (= -128) 10000001 (= -127) … 10001101 (= -115) … 1111 (= -1) 44
2 -Complement • Getallenbereik [-2 n-1, -(2 n-1 -1). . . -1, +0, +1, … +(2 n-1 -1)] • Asymmetrisch bereik! • 0 heeft slechts 1 voorstelling • Rekenregels eenvoudig! • Omrekenformule: X = Xn-1 (-2 n-1) + Xn-2 2 n-2 + … + X 0 45
2 -Complement • Omrekenformule: n-1 X < 0: 2 n - | X | = Xi 2 i n-1 i=0 (Xn-1 = 1) - | X | = - 2 n + Xi 2 i i=0 n-2 = - 2 n-1 + 1 × 2 n-1 + Xi 2 i i=0 • X = Xn-1 (-2 n-1) + Xn-2 2 n-2 + … + X 0 (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 = { …, -2 m, -m, 0, m, 2 m, … } 1 = { …, -2 m+1, -m+1, 1, m+1, 2 m+1, … } 2 = { …, -2 m+2, -m+2, 2, m+2, 2 m+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 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 10, … } 11, … } 12, … } 13, … } 14, … } 2 3 4 × 0 0 2 3 4 0 1 2 1 3 49
2 -Complement & Restklassen modulo 2 n 0 = { …, -2 n+1, -2 n, 1 = { …, -2 n+1, 2 = { …, -2 n+2, … 2 n-1 -1 = { …, 2 n-1 = { …, … 2 n -2 = { …, 2 n -1 = { …, 2 -Complement 0, 1, 2, Plus-conventie 2 n, 2 n+1 … } 2 n+1, … } 2 n+2, … } - 2 n-1 -1, 2 n +2 n-1 -1, … } - 2 n-1 , 2 n-1, 2 n +2 n-1 , … } -2, 2 n -2, -1, 2 n -1, 2 n+1 -2, … } 2 n+1 -1, … } 50
2 -Complement • Besluit: – Apparatuur werkt met restklassen – Resultaat steeds modulo 2 n – 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: 2 n - | X | 2 n = (2 n - 1 + 1) 2 n - | X | = 2 n - 1 - | X | + 1 = 111… 11 - |X| + 1 = (1 -Xn-1) (1 -Xn-2) … (1 -X 0) + 1 • Bijgevolg: bits omkeren en 1 bijtellen 53
Inverteren • Voorbeeld: (n = 8) 0110 (132) 1001 (omkeren) + 1 10011010 (-132) • Merk op: ook geldig -X +X 10011010 (-132) 01100101 (omkeren) + 1 0110 (+132) 54
Inverteren • Schakeling: n × NIET, n × HOPT X= xn-1 HOPT -X =Y= yn-1 x 2 . . . x 1 x 0 1 HOPT y 2 y 1 HOPT y 0 55
Som Xn Xn -1 X 2 X 1 X 0 Yn Yn -1 Y 2 Y 1 Y 0 OPT Sn -1 OPT S 2 OPT S 1 HOPT S 0 56
Som • Voorbeelden (n = 8) 00010110 (22) + 11100111 (-25) 11111101 (-3) 00011001 (25) + 11101010 (-22) 100000011 (3) 11100111 (-25) + 11110101 (-11) 11100 (-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 (22) (-25) + 11110101 11100 (-3) 11111000 00011001 + 11101010 100000011 (25) (-22) (3) overdrachten (-25) (-11) (-36) 60
Optelling Xn Xn -1 X 2 X 1 X 0 Yn Yn -1 Y 2 Y 1 Y 0 OPT OPT HOPT EOF Sn Overloop (indien 1) Sn -1 S 2 S 1 S 0 61
Product 11110011 (-13) × 00000111 (7) 11110011 11010100101 (-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) 0000001010 (+26) 11100110 (-26) 11111100110 (-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 64
10 -Complement • Som 0500 + 9660 = 10160 (500) + (-340) = (160) • Product 0120 9960 = 1495200 (120) (-40) = (-4800) • Overloop mogelijk! 3500 + 2000 = 5500 (3500) + (2000) = (-4500) !!! 65
1 -Complement • Positief: 1 e bit = 0, overige zie natuurlijke getallen • Negatief: 2 n - 1 - | X | • Getallenbereik [-(2 n-1 -1). . . -1, -0, +1, … +(2 n-1 -1)] • Verouderd (niet meer gebruikt) 66
Plus 000… 001 000… 010 000… 011… 110 011… 111 n-1 2 - 2 n-1 + 1 - 2 n-1 + 2 - 2 n-1 + 3 -2 -1 Notatie 100… 000 100… 001 100… 010 100… 011 … 111… 110 111… 111 0 1 2 3 2 n-1 - 2 2 n-1 - 1 67
Plus n-1 2 • Getallenbereik [-2 n-1, -(2 n-1 -1). . . -1, +0, +1, … +(2 n-1 -1)] • Asymmetrisch bereik! • 0 heeft slechts 1 voorstelling • = 2 -complement met omgekeerde tekenbit • Voordeel: positief getal > negatief getal 68
Vergelijking (8 -bit getallen) 69
Vergelijking (8 -bit getallen) 70
Gebroken Getallen 71
Gebroken getallen • Gewichten met negatieve exponent Voorstelling = ck … c 1 c 0. 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 + + + 5 32 5 16 5 2 8 1 4 1 2 0 5 16 5 8 5 32 2 2 5 4 2 1 2 0 75
Omzetting Decimaal Binair x = x 0 = c-1 2 -1 + c-2 2 -2 + … + c-m 2 -m x 1 = 2 x 0 = c-1 + c-2 2 -1 + … + c-m 2 -(m-1) x 1 1 ? c-1 = 1 x 1< 1 ? c-1 = 0 x 2 = 2 (x 1 - c-1 ) = c-2 + c-3 2 -1 +… + c-m 2 -(m-2) x 2 1 ? enz. . . c-2 = 1 x 2< 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 77
Vaste komma voorstelling • Komma op vaste plaats “verondersteld” • Bijvoorbeeld : 01101110 “. ” na 5 de bit 01101. 110 (13. 75) “. ” na 3 de bit 01110 (3. 4375) 78
Vaste komma voorstelling • Verband met gehele getallen (p bits na “. ”) cn-1 2 n-p-1 +… + cp 20 + cp-1 2 -1 +…+ c 0 2 -p = (cn-1 2 n-1 +… + cp 2 p + cp-1 2 p-1 +…+ c 0 20) 2 -p • Voorbeeld: 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: 2 n 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 + 0010. 0011 + 00100011 • Aligneren (= verschuiven) 011. 10110 01110110 + 010. 00110 + 01000110 101. 11100 10111100 × 2 -5 × 2 -4 × 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 × 10 e 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 Onderloop 0 getallen overloop -10100 • • -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 Onderloop 0 getallen overloop -10100 -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: F +0. 1234 × 1003 = +0. 001234 × 1004 = +12. 34 × 1002 = +0. 00001234 × 1005 16 = 24 F +0. 1011 × 162 = +0. 00001011 × 163 = +1011. 0 × 161 = +0. 00001011 × 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, . . . • Na. N (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 00000 Nul 499999 + Oneindig 599999 - Oneindig 88888 Na. N 103
DRAMA BKV: Bewerking. 1531234567 Vooraf: opsplitsen in aparte registers . 1 2 3 4 5 6 7 0 0000000053 000001 104
DRAMA BKV: Bewerking. 0614328922 Achteraf: terug samenvoegen in 1 register Afronden . 4 3 2 8 9 2 1 6 3 1 000061 00000 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. 130000 (100 -5) + -0. 9200043000 (100 -6) 0. 130000 (100 -5) + -0. 0092000430 (100 -5) 108
Som • Optellen / Aftrekken 0. 9999332000 (1008) + 0. 0000935211 (1008) = 1. 0000267211 (1008) 0. 130000 (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. 2 n 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 30 0 40 @ 60. 31 1 41 A 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 F 0 0 80 --C 0 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
- Slides: 119