1.19k likes | 1.43k Views
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)
E N D
Hoofdstuk 6 Gegevensvoorstellingen Berekeningen
Inhoud • Talstelsels • Getallen in een Computer • Natuurlijke getallen • Gehele getallen • Gebroken getallen • Bewegende komma getallen • Andere gegevens (letters, …)
Talstelsels • Getal = abstract (hoeveelheid) • Eigenschappen (priem, deelbaar, …) • Voorstelling = “naam” • Systematiek: Talstelsel • Berekeningen in het talstelsel • Voorbeeld: r-tallig talstel
r-tallig talstelsel • r = grondtal (= vast) • Elk cijfer: gewicht in functie van de positie • Zij ci { 0, 1, …, r-1 } Voorstelling = cn-1cn-2 … c1c0 gewicht cn-1rn-1+cn-2rn-2+ … +c1r1+c0r0
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!
Getallen in een Computer • Eindigaantal 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 / vermenigvuldiging590 + 5301120 (= 4 cijfers! OVERLOOP) • Associativiteit?400 + (800 - 300)(400 + 800) - 300 • Distributiviteit?005 × (300 - 200)(005 × 300) - (005 × 200)
Natuurlijke getallen • Omzetting Binair Decimaal • Omzetting Binair Octaal/Hexadecimaal • BCD voorstelling • Binairrekenen • optelling • aftrekking (zie ook gehele getallen) • vermenigvuldiging • deling
Omzetting Decimaal Binair X cn-1… c1c0 metci {0, 1} X0 = X = cn-12n-1+… +c121+c020 X0 = even: c0= 0 X0 = oneven: c0= 1 X1 = X0 div 2 = cn-12n-2+cn-22n-3+… +c120 X1 = even: c1= 0 X1 = oneven: c1= 1 enz.
Omzetting Decimaal Binair X cn-1cn-2… c1c0 metci {0, 1} X0 = X, Xi = Xi-1div 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… c1c0 metci {0, 1} X =cn-12n-1+ cn-22n-2… +c121+c020 =(cn-12+cn-2 ) 2n-2+… +c121+c020 =(( ... (( 0 + cn-1) 2+cn-2) 2+… +c1) 2+c0 X0 = 0 Xi = Xi-1 × 2 +cn-i(i=1 .. n) X = Xn
× 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 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 + + + + + + + + + +
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: hm16m+… +h1161+h0160 hi = ci323+ci222+ci121+ci020 en16 = 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.) 1 0 1 1 1 0 1 0 1 0 2 E A (hex.)
Binary Coded Decimal (BCD) • = decimale voorstelling, cijfers binair • 4 bits per cijfer • vb. 1586 0001010110000110 • 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 • ndec. 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
OPT HOPT 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
X Y HOPT T (overdracht) S(som) EOF X Y S T EN Halve Opteller (HOPT) X Y S T 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1
Xi Yi Ti OPT Ti+1 (overdracht) Si(som) O Xi Yi Ti HOPT Ti+1 Si OF S HOPT T S 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
HOPT OPT OPT OPT OPT Optelschakeling (parallel) Xn -1 Xn -2 X2 X1 X0 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 10 0 1 1 10 lenen 0 1 1 10
HAFT AFT AFT AFT AFT Verschilschakeling (parallel) Xn -1 Xn -2 X2 X1 X0 Yn -1 Yn -2 Y2 Y1 Y0 Fout! Vn-1 Vn -2 V2 V1 V0
X of 0! 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)
Efficiënte Implementatie • Partieel Sommen: X of 0 • Partieel Sommen direct bijtellen X Y = X × Yi2i = X ×2n× Yi2i2-n = (X Yi2n) 2i-n = (X Y02n) 2-n+ (X Y12n) 21-n+ … + (X Yn-12n) 2-1
Efficiënte Implementatie (2) X Y = (X Y02n) 2-n+ (X Y12n) 21-n + … + (X Yn-12n) 2-1 = ((X Y02n) 2-1 + (X Y12n)) 21-n + … + (X Yn-12n) 2-1 = (… (((0 + X Y02n) 2-1 + X Y12n) 2-1) + … + X Yn-12n) 2-1 P(0) = 0 P(i) = (P(i-1) + X Yi-12n) 2-1i = 1 .. n P(n) = X Y
An-1 Qn-1 Xn-1 ... ... ... A0 Q0 X0 Algoritme Q0 = 1 N bit opteller T T 0, A 00…0, Q YN keer: (a) Q0 = 1: C, A A + X (b) verschuif T, A, Q = verschuif naar rechts
X = 11011 Y = 01101 i T A Q 0 0 0000001101 1 01101101101 (+) 0 0110110110(») 2 0 0011011011(») i T A Q 3 10000111011 (+) 0 1000011101(») 4 10101111101 (+) 0 1010111110(») 5 0 0101011111 (») X Y Voorbeeld Merk Op: indien resultaat n bits: overloop als A 00…0
Deling • Deling = inverse vermenigvuldiging • Vermenigvuldiging = # { optelling, versch. } • Deling = # { aftrekking, verschuiving }
Gehele Binaire Getallen • n bit-getallen • 0000…000 t.e.m. 1111…111 n bits n bits • Natuurlijke getallen: [0, 2n- 1] • Gehelegetallen: • ½ stellen positieve getallen voor • ½ stellen negatieve getallen voor
Gehele Binaire Getallen • Verschillende wijzen van opdelen: • Voorteken • 1-complement • 2-complement • Plus 2n-1 notatie
n-2 Xi 2i . i = 0 Xn-1 Xn-2 ... X0 Voorteken • Eerste Bit = Tekenbit Tekenbit 0: positief 1: negatief
Voorteken • Bijv. n = 8 00001101 (= +13) 10001101 (= -13) 01111111 (= +127) 11111111 (= -127) 00000000 (= +0) 10000000 (= -0)
Voorteken • Getallenbereik: [-(2n-1-1) ... -1, -0, +0, +1, … +(2n-1-1)] • Symmetrisch bereik • -0 =?= +0 • Rekenregels Complex (+, -) X = Xn-1Xn-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-1EOFYn-1; Zn-2..0 = Xn-2..0 * Yn-2..0 ; /* test op overloop! */
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 2-Complement 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
Bijv. n = 8 00000000 (= +0) 00000001 (= +1)… 00001101 (= +13) … 01111111 (= +127) 10000000 (= -128) 10000001 (= -127)… 10001101 (= -115) … 11111111 (= -1) 2-Complement
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-22n-2 + … + X0
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-22n-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 ma = b modm 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 Plus-conventie 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, … } 2-Complement