Hoofdstuk 6

Post on 21-Jan-2016

76 views 0 download

description

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) - PowerPoint PPT Presentation

Transcript of Hoofdstuk 6

1

Hoofdstuk 6

Gegevensvoorstellingen Berekeningen

2

Inhoud

• Talstelsels

• Getallen in een Computer

• Natuurlijke getallen

• Gehele getallen

• Gebroken getallen

• Bewegende komma getallen

• Andere gegevens (letters, …)

3

Talstelsels

• Getal = abstract (hoeveelheid)– Eigenschappen (priem, deelbaar, …)

• Voorstelling = “naam”– Systematiek: Talstelsel– Berekeningen in het talstelsel– Voorbeeld: r-tallig talstel

4

r-tallig talstelsel

• r = grondtal (= vast)

• Elk cijfer: gewicht in functie van de positie

• Zij ci { 0, 1, …, r-1 }

cn-1 rn-1 + cn-2 rn-2 + … + c1 r1 + c0 r0

Voorstelling = cn-1 cn-2 … c1 c0

gewicht

5

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!

6

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

7

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)

8

Natuurlijke getallenNatuurlijke getallenNatuurlijke getallenNatuurlijke getallen

9

Natuurlijke getallen

• Omzetting Binair Decimaal• Omzetting Binair Octaal/Hexadecimaal• BCD voorstelling• Binair rekenen

– optelling– aftrekking (zie ook gehele getallen)– vermenigvuldiging– deling

10

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.

11

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

12

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

13

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

14

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

+ + + + + + + + + +

15

Octaal / Hexadecimaal

• Compacter dan Binair

• Nauw verwant met Binair

• Gebruik: – Programmeertalen– Tonen van inhoud van Geheugen/Register

16

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!

17

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.)

18

Binary Coded Decimal (BCD)

• = decimale voorstelling, cijfers binair

• 4 bits per cijfer

• vb. 1586 0001 0101 1000 0110

• Complexe rekenregels ...

19

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

20

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

21

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

22

Halve Opteller (HOPT)

X Y S T

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

HOPT

X Y

S (som)T

(overdracht)

EN

EOFXY S

T

23

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

OPT

Xi Yi Ti

Si (som)Ti+1

(overdracht)

HOPTXi

Yi

Ti

HOPT

OF Ti+1

Si

O

TS

S

24

Optelschakeling (parallel)

OPT HOPTOPTOPTOPT

Xn -1 Xn -2 X2 X1 X0

Yn -1 Yn -2 Y2 Y1 Y0

Sn-1 Sn -2 S2 S1 S0

Overloop!

25

Optelschakeling (serieel)

OPT

1

overdracht

X-register

Y-register

S-registerS

T

Initieel 0 (Stap=0)Stap = n

OVERLOOP?

OVI, PO7

Xi

Yi

Ti

schuifregisters

26

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 lenen 0 10 0 1 1 10

27

Verschilschakeling (parallel)

AFT HAFTAFTAFTAFT

Xn -1 Xn -2 X2 X1 X0

Yn -1 Yn -2 Y2 Y1 Y0

Vn-1 Vn -2 V2 V1 V0

Fout!

28

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!

29

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

30

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

31

Algoritme

An-1 A0... Qn-1 Q0...

Xn-1 X0...

T

N bit optellerQ0 = 1

= verschuif naar rechts

T 0, A 00…0, Q YN keer: (a) Q0 = 1: C, A A + X (b) verschuif T, A, Q

32

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

33

Deling

• Deling = inverse vermenigvuldiging

• Vermenigvuldiging = # { optelling, versch. }

• Deling = # { aftrekking, verschuiving }

34

Gehele GetallenGehele GetallenGehele GetallenGehele Getallen

35

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

36

Gehele Binaire Getallen

• Verschillende wijzen van opdelen:– Voorteken– 1-complement– 2-complement– Plus 2n-1 notatie

37

Voorteken

• Eerste Bit = Tekenbit

Xn-2 X0...Xn-1

Tekenbit0: positief1: negatief

Xi 2i

.i = 0

n-2

38

Voorteken

• Bijv. n = 8

00001101 (= +13)

10001101 (= 13)

01111111 (= +127)

11111111 (= 127)

00000000 (= +0)

10000000 (=0)

39

Voorteken

• Getallenbereik:

[2n-11) ... 1, 0, +0, +1, … +(2n-11)]

• Symmetrisch bereik

• 0 =?= +0

• Rekenregels Complex (+, ) X = Xn-1 Xn-2 … X1 X met Xn-1 = tekenbit

Gevraagd: Z := X + Y

40

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 }

}

41

Voorteken: Vermenigvuldiging

{ Z = X × Y }

Zn-1 = Xn-1 EOF Yn-1 ;

Zn-2..0 = Xn-2..0 * Yn-2..0 ; /* test op overloop! */

42

2-Complement2-Complement2-Complement2-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

43

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

44

2-Complement

• Bijv. n = 8

00000000 (= +0)

00000001 (= +1)…

00001101 (= +13)

01111111 (= +127)

10000000 (= 128)

10000001 (= 127)…

10001101 (= 115)

11111111 (= 1)

45

2-Complement

• Getallenbereik

[2n-1, (2n-11) ... 1, +0, +1, … +(2n-11)]

• Asymmetrisch bereik!

• 0 heeft slechts 1 voorstelling

• Rekenregels eenvoudig!

• Omrekenformule:

X = Xn-1 (2n-1) + Xn-2 2n-2 + … + X0

46

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-2 2n-2 + … + X0

(ook geldig voor positieve getallen: xn-1 = 0)

i = 0 n-2

n-1

i = 0

i = 0

n-1

47

2-Complement & Restklassen

• congruent modulo ma = 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, … }...

48

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

49

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 40 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

50

2-Complement & RestklassenRestklassen 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

51

2-Complement

• Besluit:

– Apparatuur werkt met restklassen

– Resultaat steeds modulo 2n

– d.i. alleen laatste n bits behouden

52

Bewerkingen met 2-complement

• Inverteren

• Som

• Verschil X Y = X + (Y)

• Product

• Aanpassing van woordlengte

53

Inverteren

• X X• X negatief: 2n | X |

2n = (2n 1 + 1)

2n | X | = 2n 1 | X | + 1

= 111…11 |X| + 1

= (1Xn-1) (1Xn-2) … (1X0) + 1

• Bijgevolg: bits omkeren en 1 bijtellen

54

Inverteren

• Voorbeeld: (n = 8)

01100110 (132)

10011001 (omkeren)

+ 1

10011010 (132)

• Merk op: ook geldig X +X

10011010 (132)

01100101 (omkeren)

+ 1

01100110 (+132)

55

Inverteren

• Schakeling: n × NIET, n × HOPT

HOPT HOPTHOPT HOPT

1

X = xn-1 x2 x1 x0

X =Y= yn-1 y2 y1 y0

...

56

Som

OPT HOPTOPTOPT

Xn Xn -1 X2 X1 X0

Yn Yn -1 Y2 Y1 Y0

Sn Sn -1 S2 S1 S0

OPT

57

Som

• Voorbeelden (n = 8)

00010110 (22)

+ 11100111 (-25)

11111101 (-3)

00011001 (25)

+ 11101010 (-22)

100000011 (3)

11100111 (-25)

+ 11110101 (-11)

111011100 (-36)

58

Som

• Overloop:x, y > 0 x+y < 0x, y < 0 x+y > 0

• Voorbeelden: (n=8)

01010110 (86) 10010111 (-105)

+ 01000001 (65) + 10010100 (-108)

10010111 (-105) 100101011 (43)

59

Som

• Overloopdetectie = eenvoudig– 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)

60

Som

• Voorbeelden (n = 8) 00000110 00010110 (22)

+ 11100111 (-25)

11111101 (-3)

11111000 00011001 (25)

+ 11101010 (-22)

100000011 (3)

11100111 11100111 (-25)

+ 11110101 (-11)

111011100 (-36)

overdrachten

61

Optelling

OPT HOPTOPT

Xn Xn -1 X2 X1 X0

Yn Yn -1 Y2 Y1 Y0

Sn Sn -1 S2 S1 S0

OPT OPT

Overloop (indien 1)

EOF

62

Product

11110011 (-13) × 00000111 (7)

11110011

11110011

11110011

11010100101 10100101 (-91)

• Overloop Mogelijk!• Algoritme van vermenigv. natuurlijke getallen

63

Aanpassing woordlengte

• Aanpassen lengte v/d voorstelling– Kopiëren van tekenbit

• Voorbeeld: 8-bit vs. 16-bit00011010 (26) 0000000000001010 (26)

11100110 (26) 1111111111100110 (26)

64

Vergelijking: 10-complement(Decimaal)

• Voorbeeld: 4 decimale cijfers

• positief: 0000 … 4999

• negatief: 104 | X |

1 9999 = 10000 12 9998

4000 6000

5000 5000

65

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) !!!

66

1-Complement

• Positief: 1e bit = 0, overige zie natuurlijke getallen

• Negatief: 2n 1 | X |• Getallenbereik

[2n-11) ... 1, 0, +0, +1, … +(2n-11)]

• Verouderd (niet meer gebruikt)

67

Plus 2n-1 Notatie

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 2n-

1 2n-1

2 1

68

Plus 2n-1

• Getallenbereik

[2n-1, (2n-11) ... 1, +0, +1, … +(2n-11)]

• Asymmetrisch bereik!

• 0 heeft slechts 1 voorstelling

• = 2-complement met omgekeerde tekenbit

• Voordeel: positief getal > negatief getal

69

Vergelijking (8-bit getallen)Dec. Voorteken 1-Compl. 2-Compl. Plus 128

0 00000000 00000000 00000000 100000001 00000001 00000001 00000001 100000012 00000010 00000010 00000010 100000105 00000101 00000101 00000101 10000101

10 00001010 00001010 00001010 10001010100 01100100 01100100 01100100 11100100126 01111110 01111110 01111110 11111110127 01111111 01111111 01111111 11111111128 onbest. onbest. onbest. onbest.

70

Vergelijking (8-bit getallen)Dec. Voorteken 1-Compl. 2-Compl. Plus 128

-0 10000000 11111111 onbest. onbest.-1 10000001 11111110 11111111 01111111-2 10000010 11111101 11111110 01111110-5 10000101 11111010 11111011 01111100

-10 10001010 11110101 11110110 01110110-100 11100100 10011011 10011100 00011100-126 11111110 10000001 10000010 00000010-127 11111111 10000000 10000001 00000001-128 onbest. onbest. 10000000 00000000

71

Gebroken GetallenGebroken GetallenGebroken GetallenGebroken Getallen

72

Gebroken getallenGebroken getallen

• Gewichten met negatieve exponent

c-1 r-1 + c-2 r-2 + … +c-m r-m

Voorstelling = ck … c1 c0 . c-1 c-2 … c-m

ck rk + … + c1 r1 + c0 r0 +

73

Gebroken Getallen

• Omzetting Decimaal Binair

• Omzetting Binair Decimaal

• Gebroken getallen in de computer– Vaste Komma Voorstelling– Bewegende Komma Voorstelling

74

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)

75

Omzetting Binair Decimaal

0. 0 0 1 0 1 0

5 5 5 1 1 032 16 8 4 2

5 5 5 5 1 1 032 16 8 4 2

2

+ + + + + +

2 2

2 2

2

76

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 ...

77

Omzetting Decimaal Binair

0.158 0.0.316 00.632 01.264 10.528 01.056 10.112 0...

78

Vaste komma voorstelling

• Komma op vaste plaats “verondersteld”

• Bijvoorbeeld :

01101110

“.” na 5de bit 01101.110

(13.75)

“.” na 3de bit 011.01110

(3.4375)

79

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

80

Vaste komma voorstelling

• n-bit voorstelling: 2n mogelijke getallen

• per bit extra na “.”:– bereik gehalveerd– nauwkeurigheid verdubbeld

... ...... ...

0

bereik... ...

81

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

82

Vaste komma voorstelling

• Bewerkingen– Som/Verschil– Product/Quotiënt

83

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

84

VKV: Product/Quotiënt

• Product # 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)

85

Vaste komma voorstelling

• Alleen als bereik van getallen gekend

• Anders, snel overloop!

• Vandaar: bewegende komma voorstelling

86

Bewegende komma voorstelling

87

Bewegende komma voorstelling

• Het Principe

• Bewegende komma voorstelling

• Bewerkingen– Optelling– Vermenigvuldiging

88

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

89

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

90

Eigenschappen

• Voorbeeld (decimaal talstelsel):– 3 cijfers (+ teken) voor mantisse– 2 cijfers (+ teken) voor exponent

• Bereik (positieve getallen) +0.100 × 1099 tot +0.999 × 10+99

= verschil van 199 orders van grootteslechts 5 cijfers (met teken)

91

Reële getallen

• Grote negatieve getallen < 0.999 × 1099

• Negatieve getallen tussen 0.999 × 1099 en 0.100 × 1099

• Kleine negatieve getallen tussen 0.100 × 1099 en 0

• Nul (0)

• Kleine positieve getallen tussen 0 en +0.100 × 1099

• Positieve getallen tussen 0.100 × 1099 en 0.999 × 1099

• Grote positieve getallen > +0.999 × 1099

10100 10100 0 1010010100

Negatieveoverloop Onderloop

0

Voorstelbare getallen

Voorstelbare getallen

Positieveoverloop

92

Reële getallen

10100 10100 0 1010010100

Negatieveoverloop

PositieveoverloopOnderloop

0

......

Niet alle getallen!

0.001 × 10990.001 × 1099

Voorstelbare getallen

Voorstelbare getallen

Relatieve afstand constant

93

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 10100 0 1010010100

101000 101000 0 101000101000

94

Invloed van basis

• basis (=10)

• basis (100 i.p.v. 10)

gebied breidt uit, # getallen = ongewijzigd, nwk

10100 10100 0 1010010100

10200 10200 0 1020010200

95

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

?

96

Bewegende komma voorstelling

• Algemeen

X = ± m be

±m = mantisse

b = basis (= vast) = 2 (2, 4, 8, 16, …)

e = exponent

• Bewegende komma voorstelling:

(±, m, e)

97

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

98

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

99

IEEE Voorstel

• Enkelvoudige nauwkeurigheid

• Dubbele nauwkeurigheid

t exp (8 bits) mantisse (23 bits)

t exp (11 bits) mantisse (52 bits)

Basis = 2, + 127 notatie

Basis = 2, + 1023 notatie

100

IEEE Voorstel

• Genormaliseerd getal (1 |m| < 2)mantisse = 1. … (1 niet in voorstelling!)

• ± Nul• ± Oneindig

– bijv. getal / 0, ...

• NaN (not a number)– bijv. / ,

• Gedenormaliseerd getal

101

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)

102

DRAMA BKV

1 5 3 1 2 3 4 5 6 7

| Mantisse |

.komma

Exponent (+50 notatie) basis = 100 = 102

Tekencijfer (0 = +; 1 = )

Genormaliseerd als 0.01 | m | < 1Bereik (ongeveer): ]10+100, 10107] [10107, 10+100[

= 0.1234567 × 1003

103

DRAMA BKV

0 0 0 0 0 0 0 0 0 0

4 9 9 9 9 9 9 9 9 9

5 9 9 9 9 9 9 9 9 9

8 8 8 8 8 8 8 8 8 8

Nul

+ Oneindig

Oneindig

NaN

104

DRAMA BKV: Bewerking

1 5 3 1 2 3 4 5 6 7.

1 2 3 4 5 6 7 0 0 0

Vooraf: opsplitsen in aparte registers

0 0 0 0 0 0 0 0 5 3

0 0 0 0 0 0 0 0 0 1

.

105

DRAMA BKV: Bewerking

0 6 1 4 3 2 8 9 2 2.

4 3 2 8 9 2 1 6 3 1

Achteraf: terug samenvoegen in 1 register

0 0 0 0 0 0 0 0 6 1

0 0 0 0 0 0 0 0 0 0

.

Afronden

106

Som

• Voorbeelden

0 58 9999332 + 0 56 9352116

0.9999332 1008 + 0.9352116 1006

0 45 1300000 + 1 44 92000430.1300000 1005 + 0.9200043 1006

107

Som

• Stappen:– Aligneren (exponenten gelijk)– Optellen/Aftrekken– Normaliseren– Afronden

• Bewerkingen:– worden met meer cijfers uitgevoerd

(verhoogde nwk), zie gele cijfers in berekening

108

Som

• Aligneren:– kleinste exponent = grootste– mantisse naar rechts verschuiven

0.9999332000 (1008) + 0.9352116000 (1006)

0.9999332000 (1008) + 0.0000935211 (1008)

0.1300000000 (1005) + 0.9200043000 (1006)

0.1300000000 (1005) + 0.0092000430 (1005)

109

Som

• Optellen / Aftrekken

0. 9999332000 (100) + 0.0000935211 (100)

= 1.0000267211 (100)

0.1300000000 (1005) + 0.0092000430 (1005)

= 0.1207999570 (1005)

110

Som

• Normaliseren (tenzij exp. over/onderloop)– Resultaat > 1 (naar rechts verschuiven)– Resultaat < 0.01 (naar links verschuiven)

1.0000267111 (100)

= 0.0100002671 (100)

0.1207999570 (1005)

111

Som

• Afronden– slechts 7 cijfers behouden voor mantisse

0.0100002671 (100)

0.0100003 (100) 0 59 0100003

0.1207999570 (1005)

0.1208000 (1005) 0 45 1208000

112

Product

• Voorbeeld:

0 58 1284330 × 0 56 0352110

0.1284330 1008 × 0.0352110 1006

• Stappen:– mantisses vermenigvuldigen

+ exponenten optellen– normaliseren– afronden

113

Product

• Mantissen vermenigvuldigen

• Exponenten optellen– plus M-notatie: M aftrekken

m = 0.1284330000 × 0.0352110000 = 0.004522254363

e = 58 + 56 50 = 64

114

Product

• Normaliseren

m = 0.004522254363 0.4522254363

e = 64 63

• Afronden

m = 0.4522254

0 63 4522254

115

Alfanumerieke Informatie

116

Alfanumerieke Informatie

• Symbolen (letters, tekens, …)

• Voorstellen d.m.v. een code– n bit code max. 2n symbolen

• Gestandardiseerde codes:– ASCII – EBCDIC – UNICODE

117

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 a32 2 42 B 62 b...

118

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 AF2 2 82 b C2 B...

119

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