V1CP1(c)

advertisement
V1CP1 – Week 2
Getalrepresentaties
Adrie van Doesburg
Leo van Moergestel
Jan Nijman
Daniël Telgen
Wouter van Ooijen
Tientallige stelsel (decimaal)
Bijvoorbeeld: 1523 (cijfers 0 t/m 9)
103
102
101
100
1000
100
10
1
1
5
2
3
Achttallig stelsel (octaal)
Bijvoorbeeld: 2763 (cijfers 0 t/m 7)
83
82
81
80
512
64
8
1
2
7
6
3
Tweetallig stelsel (binair)
Bijvoorbeeld: 10111110011 (cijfers 0 en 1)
210
29
28
27
26
25
24
23
22
21
20
1024
512
256
128
64
32
16
8
4
2
1
1 0 1 1 1 1 1 0 0 1 1
Zestientallig stelsel
(hexadecimaal)
Bijvoorbeeld: 5F3 (cijfers 0 t/m 9 en letters A t/m F)
162
256
161
16
160
1
5
F
3
Omrekenen van decimaal
naar binair
1523dec = ?bin
grootste 2-macht die past in 1523
grootste 2-macht die past in 499
grootste 2-macht die past in 243
grootste 2-macht die past in 115
 210 (1024); rest 499
 28 (256); rest 243
 27 (128); rest 115
 26 (64); rest 51
grootste 2-macht die past in 51
grootste 2-macht die past in 19
 25 (32); rest 19
 24 (16); rest 3
grootste 2-macht die past in 3
grootste 2-macht die past in 1
 21 (2); rest 1
 20 (1); rest 0
Omrekenen van decimaal
naar binair (2)
De resultaten op een rijtje:
210
29
28
27
26
25
24
23
22
21
20
1
0
1
1
1
1
1
0
0
1
1
Reken 2009(10) om naar de binaire representatie
Omrekenen van binair naar
hexadecimaal en octaal
bin 01001110001010001010110001100011
hex
4
E
2
8
A
C
Bepaal zelf de octale waarde
6
3
Bits, nibbels, bytes en words
MSB
31
LSB
16 15
87
43
0
bit
nibble
byte
16 bits word
32 bits word
Voorvoegsels
voorvoegsel
tweemacht
waarde
Kilo
210
1024
Mega
220
1048576
Giga
230
1073741824
Tera
240
1099511627776
Peta
250
1125899906842624
Exa
260
1152921504606846976
Zeta
270
1180591620717411303424
Binair optellen
0
0
1
1
+
+
+
+
0
1
0
1
=
=
=
=
0
1
1
10
Binair vermenigvuldigen
Zeer eenvoudige tafel:
0
0
1
1
x
x
x
x
0
1
0
1
=
=
=
=
0
0
0
1
Binair delen
Negatieve getallen
-127
11111111
…..
……
-3
10000011
Tekenbit (1=neg)
10000010
-2
-1
DEC
-0
+0
+1
+2
Nadelen: twee 0-en
10000001 (-1)
00000001 ( 1) +
10000010 (-2 !)
Tekenbit (0=pos)
10000001
BIN
10000000
00000000
00000001
00000010
+3
00000011
…..
……
+127
01111111
1-complement representatie
-127
11111111
…..
……
-3
-2
-1
DEC
11111100
Nadeel: nog
steeds twee
0-en
-0
11111101
11111110
BIN
+0
11111111
Flip 0-en
00000000
en 1-en
00000001
+2
Maar
11111110 (-1)
+3
00000001 ( 1) +
00000011
…..
11111111 (-0 !)
……
+1
+127
00000010
01111111
10-complement
5000
…..
9996
9997
9998
9999
0000
0001
0002
0003
…..
4999
Welke waarde krijgt - 45 ?
N – 10000 = - 45
N = 10000 - 45 = 9955
9955 is het 10-complement van 45
2-complement representatie
-128
….
-3
-2
Nadeel:
Aantal pos. en
neg. getallen is
asymmetrisch
-1
DEC
+0
+3
….
+127
……
11111101
11111110
11111111
BIN
+1
+2
10000000
00000000
00000001
Er is nog
steeds een
tekenbit!
00000010
00000011
……
01111111
Tel boven
verder
Schrijf -3 in 2-complement
representatie
Ga uit van de inverse
+3 = 00000011
Flip alle bits
1-complement = 11111100
Tel er 1 bij op
1
+
-3 = 11111101
Schrijf nu -15 in 2-complement representatie
Waarom moet je iets van
getalrepresentaties weten?
Is dit een grap?
of
Werkt Excel niet goed?
of
Is de CPU defect?
Lees het artikel !
Lees het artikel
Een computer is
ook maar een
mens
Representatie van
niet-gehele getallen
Ieder (niet-geheel) getal kan worden geschreven in de
vorm n.dddddddddd.. x 10m, met n een cijfer ≠ 0
de z.g. genormaliseerde vorm
Het aantal d’s bepaalt de nauwkeurigheid
De waarde van m bepaalt de grootte van het getal
(m is geheel en kan positief, 0 of negatief zijn)
Vb:
0.01875
1.875
1875
=
=
=
1.875 x 10-2
1.875 x 100
1.875 x 103
Normalisatie
in het 2-tallige stelsel
In het 2-tallige stelsel kan ieder (niet-geheel) getal worden
geschreven in de vorm n.dddddddddd.. x 2m, met n een cijfer ≠ 0
Het enige cijfer ≠ 0 is 1, dus de normaalvorm is:
1.dddddddddd.. x 2m; (iedere d is 0 of 1)
Vb:
0.1875 = 1.5 x 2-3
1.875 = 1.875 x 20
1875
= 1.8310546875 x 210
= 1.1 x 2-11
= 1.111 x 20
= 1.11010110011 x 210
Binaire representatie van
niet-gehele getallen
Ieder (niet-geheel) binair getal in normaalvorm heeft de
gedaante 1.dddddddddd.. x 2m; (iedere d is 0 of 1)
Enkele trucs bij de opslag van de getallen:
• de 1 voor de punt wordt niet opgeslagen (is immers altijd 1)
• de exponent m wordt voor opslag verhoogd met 127
een opgeslagen exponenten < 127 zijn dus negatief
• als de opgeslagen exponent 0 is, is het getal niet genormaliseerd
- de waarde is 0 als alle andere bits 0 zijn
- anders is het een speciaal geval
De waarde 127 geldt voor 32 bits getallen (voor 64 bits geldt de waarde 1023)
ANSI-IEEE 754-1985 floating point
Institute of Electrical and
Electronics Engineers
float
tekenbit
1
1
8-bits
exponent
23-bits
mantisse
11-bits
52-bits
double
Float representatie van 1995.5
1995.5 = 1.94873046875 x 210
1995.5 = 1.11110010111 x 21010
exp = 10 + 127 = 137 = 10001001
0 10001001 11110010111000000000000
Float representatie van 1995.5
.94873046875 – .5 (2-1) =
.44873046875 – .25 (2-2) =
.19873046875 – .125 (2-3) =
.07373046875 – .0625 (2-4) =
.01123046875 – .00781255 (2-7) =
.00341796875 – .001952125 (2-9) =
.00146484375 – .0009765625 (2-10) =
.00048828125 – .00048828125 (2-11) = 0
Oorzaak spreedsheet-probleem
5.8 = 1.45 x 22 = 1.011100110011… x 22
5.4 = 1.35 x 22 = 1.010110011001… x 22
5.8 – 5.4
= 0.000110011010… x 22
= 1.10011010… x 2-2
0.4 = 1.6 x 2-2
= 1.10011001… x 2-2
Bij de conversie naar float treden afrondingsfouten op
Bij een aftrekking kan zo’n afrondingsfout doorwerken
Opdrachten


Bestudeer de paragrafen 3.1 en 3.2
Maak opgaven 3.1 t/m 3.5 (blz. 37)
Download