Computerarchitectuur - UGent

advertisement
Les 2:
Gegevensvoorstelling
There are only 10 different kinds of people in the world:
those who know binary and those who don't.
- Anoniem
ca2-1
Overzicht
•
•
•
•
•
•
•
Logische operaties op bits en bitstrings
Hexadecimale representatie
Voorstelling van natuurlijke getallen
Voorstelling van gehele getallen
Voorstelling van reële getallen
Voorstelling van lettertekens
Voorbeelden
ca2-2
Eenheid van informatie
binary digit of bit
0 of 1
“vals” of “waar”
“false” of “true”
George Boole (1815-1864)
ca2-3
dyadische operaties
Logische operaties
O1
0
0
1
1
O2
0
1
0
1
en
0
0
0
1
O1
0
0
1
1
O2
0
1
0
1
of
0
1
1
1
O1
0
0
1
1
O
0
1
niet
1
0
O2
0
1
0
1
eof
0
1
1
0
ca2-4
Bitsgewijze logische
operaties: en
en
0100 0101
0000 1110
masker
0000 0100
en
0000 1110
0100 0101
0000 0100
ca2-5
Bitsgewijze logische
operaties: of
of
0100 0101
0000 1110
masker
0100 1111
of
0000 1110
0100 0101
0100 1111
ca2-6
Bitsgewijze logische
operaties: exclusieve of (eof)
eof
eof
0100 0101
0000 1110
masker
0100 1011
0000 1110
0100 0101
eof
eof = modulo-2 optelling
eof = oneven aantal 1-bits
0000 1110
0100 0101
0100 1011
ca2-7
Voorbeelden
0100 0101
0000 1110
0000 0100
0100 0101
en 1111 0001
0100 0001
0100 0101
of 1111 0001
1111 0101
0100 0101
of 0000 1110
0100 1111
en
eof
0100 0101
0100 0101
?
ca2-8
Alle boolese functies
van 2 veranderlijken
O1
0
0
1
1
O2
0
1
0
1
0
0
0
0
0
0
0
1
0
0
1
0
0
0
1
1
en
“0”

O1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
eof
of
O2
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
1
en
eof
of
1
1
1
0
O2


A  B  A of B
O1

“1”
ca2-9
Overzicht
•
•
•
•
•
•
•
Logische operaties op bits en bitstrings
Hexadecimale representatie
Voorstelling van natuurlijke getallen
Voorstelling van gehele getallen
Voorstelling van reële getallen
Voorstelling van lettertekens
Voorbeelden
ca2-10
Hexadecimale notatie
4 bits = 1 nibble:
in C: z = 0x15
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
ca2-11
Octale Notatie
000
001
010
011
100
101
110
111
0
1
2
3
4
5
6
7
in C: z = 015
ca2-12
Byte
2 nibbles = 1 byte
Voorbeeld van een byte: 0101 1101
Hexadecimaal:
5D
1 kibibyte (KiB) = 210 = 1024 bytes
1 mebibyte (MiB) = 220 = 1 048 576 bytes
1 gibibyte (GiB) = 230 = 1 073 741 824 bytes
1 tebibyte (TiB) = 240 ~ 1 biljoen bytes
1 Kibibit (Kib) = 210 bit = 1024 bit
ca2-13
Grootte-orden
• Yotta
(Y) 1024
• yocto
(y)
10-24
• Zetta
(Z) 1021
• zepto
(z)
10-21
• Exa
(E) 1018
• atto
(a)
10-18
• Peta
(P) 1015
• femto
(f)
10-15
• Tera
(T) 1012
• piko
(p)
10-12
• Giga
(G) 109
• nano
(n)
10-9
• Mega (M) 106
• micro
(,u) 10-6
• kilo
• milli
(m) 10-3
(k)
103
ca2-14
En verder, voor de nerds
1021
zetta
Z
10-21
zepto
z
1024
yotta
Y
10-24
yocto
y
1027
xona
X
10-27
xonto
x
1030
weka
W
10-30
wekto
w
1033
vunda
V
10-33
vunkto
v
1036
uda
U
10-36
unto
u
1039
treda
TD
10-39
trekto
td
1042
sorta
S
10-42
sotro
s
1045
rinta
R
10-45
rimto
r
1048
quexa
Q
10-48
quekto
q
1051
pepta
PP
10-51
pekro
pk
1054
ocha
O
10-54
otro
o
1057
nena
N
10-57
nekto
nk
1060
minga
MI
10-60
mikto
mi
1063
luma
L
10-63
lunto
l
ca2-15
Een woord
Woord: aantal bytes (2,4,8)
(architectuur-afhankelijk)
Dubbelwoord: 2 woorden
Quadwoord: 4 woorden
ca2-16
Voorbeeld
01010101010100001110101010110111 ...
0101 0101 0101 0000 1110 1010 1011 0111 ...
5
5
5
55
0
50
E
A
EA
5550
B
7 ...
B7 ...
EAB7 ...
5550EAB7 ...
ca2-17
Overzicht
• Logische operaties op bits en bitstrings
• Hexadecimale representatie
• Voorstelling van natuurlijke getallen
–
–
–
–
–
–
•
•
•
•
Binair
Gray code
UPC code
QR-code
Binair gecodeerde decimalen (BCD)
Excess-3 code
Voorstelling van gehele getallen
Voorstelling van reële getallen
Voorstelling van lettertekens
Voorbeelden
ca2-18
Natuurlijke getallen: binair
0
1
2
3
4
5
6
…
0
1
10
11
100
101
110
…
0000
0001
0010
0011
0100
0101
0110
4 bit
00000000
00000001
00000010
00000011
00000100
00000101
00000110
8 bit
ca2-19
Waarde van binaire
voorstelling
n 1
an1an2 ...a1a0
A   2 ai
i
i 0
Bereik: [0 2n-1]
Aantal verschillende waarden: 2n
ca2-20
Waarde van binair getal
15610 = 100111002
22
27
24
23
15610 = 1x27 + 1x24 + 1x23 + 1x22
= 128 + 16 + 8 + 4
= 156
ca2-21
Decimaal  binair
156/2 = 78 rest
78/2 = 39 rest
39/2 = 19 rest
19/2 = 9 rest
9/2 = 4 rest
4/2 = 2 rest
2/2 = 1 rest
1/2 = 0 rest
0
0
1
1
1
0
0
1
10011100
ca2-22
Binair  decimaal
10011100
0x2+
1x2+
2x2+
4x2+
9x2+
19 x 2 +
39 x 2 +
78 x 2 +
1
0
0
1
1
1
0
0
=1
=2
=4
=9
= 19
= 39
= 78
= 156
ca2-23
Oefening
3510=
?
1000112=
ca2-24
De binaire representatie is niet
de enig mogelijke afbeelding
11
3
2
10
00
1
0
01
ca2-25
Gray code
G1
0
G2
1
11
3
10
000
0
001
1
0 0 0
011
2
0 1 1
010
3
110
4
111
5
101
6
100
7
1 1 2
1 0 3
2
G3
00
1
0
01
Reflectieve Gray code
ca2-26
UPC-code
cijfer
0
1
2
3
4
5
6
7
8
9
linkercode
0001101
0011001
0010011
0111101
0100011
0110001
0101111
0111011
0110111
0001011
rechtercode
1110010
1100110
1101100
1000010
1011100
1001110
1010000
1000100
1001000
1110100
http://www.youtube.com/watch?v=e6aR1k-ympo
ca2-27
QR-code
Versie 1 (21x21)
(Max capaciteit: 17 B)
4 niveaus van
foutcorrectie
Versie 40: (177x177)
(Max capaciteit: 2953 B)
ca2-28
Natuurlijke getallen: BCD
Binary Coded Decimal
156
10011100
0001 0101 0110
1
9C
5
6
01 56
ca2-29
Packed vs. unpacked
156
0001 0101 0110
1
5
6
01 56
packed BCD
0000 0001 0000 0101 0000 0110
0
1
0 5
01 05 06
0
6
unpacked BCD
ca2-30
0
1
2
3
4
5
6
7
8
9
BCD
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
E3
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
Excess-3 code
0011
3
1000
8
1011 11
1 0001
0110
3
1011
8
1 0001 11
1 0100
ca2-31
Overzicht
•
•
•
•
Logische operaties op bits en bitstrings
Hexadecimale representatie
Voorstelling van natuurlijke getallen
Voorstelling van gehele getallen
–
–
–
–
–
Teken + grootte
1-complement
2-complement
Verschoven
Binair gecodeerde decimalen (BCD)
• Voorstelling van reële getallen
• Voorstelling van lettertekens
• Voorbeelden
ca2-32
Gehele getallen: teken + grootte
-3
-2
-1
-0
0
1
2
3
…
1011
1010
1001
1000
0000
0001
0010
0011
43bit
bit
-7  7
10000011
10000010
10000001
10000000
00000000
00000001
00000010
00000011
8 bit
-127  127
ca2-33
Gehele getallen: teken+grootte
an1an2 ...a1a0
A  (1)
n2
an 1
i
2
 ai
i 0
Bereik: [-(2n-1-1) 2n-1-1]
Aantal verschillende waarden: 2n-1
ca2-34
Gehele getallen: 1-complement
“inverteren van bits”
0110
6
1001
-6
Alle positieve getallen worden
afgebeeld op negatieve en vice versa
ca2-35
-3
-2
-1
-0
0
1
2
3
…
+1
+1
+1
+1
+1
+1
+1
1100
1101
1110
1111
0000
0001
0010
0011
4 bit
-7  7
11111100
11111101
11111110
11111111
00000000
00000001
00000010
00000011
8 bit
-127  127
tekenuitbreiding
Gehele getallen: 1-complement
ca2-36
Voorbeeld
1-complementoptelling
+
3
1
4
0011
0001
0100
+
+
3
-1
0011
1110
10001
1
2
0010
+
+
-3
-1
1100
1110
11010
1
-4
1011
Som = A+B+overdracht
ca2-37
-3
-2
-1
0
1
2
3
…
+1
1101
1110
1111
0000
0001
0010
0011
4 bit
-8  7
11111101
11111110
11111111
+1
00000000
00000001
00000010
00000011
8 bit
-128  127
tekenuitbreiding
Gehele getallen: 2-complement
ca2-38
1-complement
n2
an1an2 ...a1a0
A  (2 n 1  1)an 1   2i ai
i 0
Bereik: [-(2n-1-1) 2n-1-1]
Aantal verschillende waarden: 2n-1
2-complement
n2
an1an2 ...a1a0
A  2 n 1 an 1   2i ai
i 0
Bereik: [-2n-1 2n-1-1]
Aantal verschillende waarden: 2n
ca2-39
Voorbeeld
2-complementoptelling
3 0011
-1 1111
+
2 10010
modulo 4 bit
3
-1
+
2
0000 0011
1111 1111
10000 0010
modulo 8 bit
ca2-40
Berekening van
2-complement
-4 100
1-complement + 1
-3 101
-2 110
110
010
000 100
-1 111
101
111 011
001
0 000
1
1
1
1
1 001
010
110 1000 100
2 010
OVERFLOW
3 011
Ook: (2n – waarde) [binair geïnterpreteerd]
ca2-41
Gehele getallen: verschoven
-2
-1
0
1
2
3
4
5
+1
+1
+1
+1
+1
+1
+1
000
001
010
011
100
101
110
111
bias = 2
000
001
010
011
100
101
110
111
0
1
2
3
4
5
6
7
ca2-42
Gehele getallen: verschoven
an1an2 ...a1a0
n 1
A   2 ai  B
i
i 0
B = bias
Bereik: [-B 2n-1-B]
Aantal verschillende waarden: 2n
ca2-43
Basiscomplement codes
• Het principe van 1-complement en 2complement kan uitgebreid worden naar
een willekeurige basis
• 2-complement wordt dan de
basiscomplementnotatie genoemd voor
het talstelsel met basis 2
• 1-complementnotatie wordt dan de
verminderde basiscomplementnotatie
genoemd voor het talstelsel met basis 2
ca2-44
Binair gecodeerde decimalen
• Teken + grootte -301
1
3
0
1
•9-complement -301 (301+698=999)
9
9
8
6
•10-complement -301 (9-compl + 1)
9
packed & unpacked
6
9
9
ca2-45
Overzicht
•
•
•
•
•
Logische operaties op bits en bitstrings
Hexadecimale representatie
Voorstelling van natuurlijke getallen
Voorstelling van gehele getallen
Voorstelling van reële getallen
– Vaste-kommavoorstelling
– Vlottende-kommavoorstelling
• Voorstelling van lettertekens
• Voorbeelden
ca2-46
Vaste-kommavoorstelling
0001101001,01010
+ 0001001001,01010
0010110010,10100
ca2-47
Vlottende-kommavoorstelling
Vlottende komma: voorstelling
Vlottende komma: exponent
Vlottende komma: mantisse
s
exp
mantisse
s
expon
mantisse
s exponent
S
mantisse
E
(-1) × M × 2
ANSI/IEEE 754
1|8|23 1|11|52
(1980)
ca2-48
Vlottende-kommagetallen
1 10000001 01000000000000000000000
Verschoven representatie
Bias = 127
Exponent: 129 - 127 = 2
ca2-49
Vlottende-kommagetallen
1 10000001 01000000000000000000000
Genormaliseerde fractie
1.01000000000000000000000
= 1 + 0 x 2-1 + 1 x 2-2 + 0 x 2-3 + …
= 1 + 0 + 0.25 + 0 + …
= 1.25
Waarde: (-1)1 x 1.25 x 22 = -1.25 x 4 = -5.0
ca2-50
Bereik & precisie
Formaat: 1|2|2, bias = 1
s|ee|mm
00 -1
0.5
00
1.00
01
0
1
01
1.25
10
1
2
10
1.50
11
2
4
11
1.75
ca2-51
Alle 5-bit vk-getallen
Formaat: 1|2|2, bias = 1
e
m
1.00
1.25
1.50
1.75
-1

0.5

0.625

0.75

0.875
0

1

1.25

1.5

1.75
1

2

2.5

3

3.5
2

4

5

6

7
Vlottende-kommavoorstelling kan gesorteerd worden
ca2-52
Gesorteerd
0 00 00 0.5
0 00 01 0.625
0 00 10 0.75
0 00 11 0.875
0 01 00 1
0 01 01 1.25
0 01 10 1.5
0 01 11 1.75
0 10 00 2
0 10 01 2.5
0 10 10 3
0 10 11 3.5
0 11 00 4
0 11 01 5
0 11 10 6
0 11 11 7
1 00 00 -0.5
1 00 01 -0.625
1 00 10 -0.75
1 00 11 -0.875
1 01 00 -1
1 01 01 -1.25
1 01 10 -1.5
1 01 11 -1.75
1 10 00 -2
1 10 01 -2.5
1 10 10 -3
1 10 11 -3.5
1 11 00 -4
1 11 01 -5
1 11 10 -6
1 11 11 -7
ca2-53
Bereik
Formaat: 1|2|2
 0.500
 0.625
 0.750
 0.875
 1.00
 1.25
 1.50
 1.75
 2.00
 2.50
 3.00
 3.50
 4.00
 5.00
 6.00
 7.00
50%
ca2-54
Bereik
Formaat: 1|2|2, bias = 1
e
m
00
01
10
11
-1

0

0.25

0.50

0.75
0

1

1.25

1.5

1.75
1

2

2.5

3

3.5

Nan

Nan
2



Nan
Gedenormaliseerde getallen (e=0)
ca2-55
Gesorteerd
0 00 00 0
0 00 01 0.25
0 00 10 0.5
0 00 11 0.75
0 01 00 1
0 01 01 1.25
0 01 10 1.5
0 01 11 1.75
0 10 00 2
0 10 01 2.5
0 10 10 3
0 10 11 3.5
0 11 00 +
0 11 01 Nan
0 11 10 Nan
0 11 11 Nan
1 00 00 -0
1 00 01 -0.25
1 00 10 -0.5
1 00 11 -0.75
1 01 00 -1
1 01 01 -1.25
1 01 10 -1.5
1 01 11 -1.75
1 10 00 -2
1 10 01 -2.5
1 10 10 -3
1 10 11 -3.5
1 11 00 - 
1 11 01 -Nan
1 11 10 -Nan
1 11 11 -Nan
ca2-56
Bereik en precisie
Formaat: 1|2|2
-
 0.00
 0.25
 0.50
 0.75
 1.00
 1.25
 1.50
 1.75

+

 2.00
 2.50
 3.00
 3.50

 Nan
 Nan
 Nan

ca2-57
Voorbeeld
Representeer 5.1 in 1|4|8 met bias 7
5.1 = 5 + 0.1
5 = 101
0.1 * 2 = 0.2
0.2 * 2 = 0.4
0.4 * 2 = 0.8
0.8 * 2 = 1.6
0.6 * 2 = 1.2
0.2 * 2 = 0.4
5.1 = 101.00011001100...
= 1.0100011001100... x 22
Exponent = 2 + 7 in 4 bits
9 = 1001
0100101000110
Eigenlijk: 5.09375
maar 0100101000111 is 5.109375 !
ca2-58
Bereik en precisie
1|8|23
Exponent bits
1|11||52
8
11
Gebruikte exp’ten
255
2047
Mantisse bits
23
52
99,60%
99,95%
6-7
15-16
10-38-1038
10-308-10308
Efficiëntie
Aantal decimalen
Bereik
Gehelen
- Decimalen
9-10
- Bereik
0-109
18-19
0-1018
ca2-59
Vlottende-kommagetallen
• Gehele getallen die niet meer bits nodig
hebben dan beschikbaar in de mantisse
kunnen steeds exact voorgesteld
worden (en zullen dus niet afgerond
worden).
• Slechts een zeer klein aantal reële
getallen kan exact voorgesteld worden.
Alle andere worden benaderd. Testen
op gelijkheid is geen goed idee.
ca2-60
Afronden
Er kan op vier manieren afgerond worden
• Naar + ∞
• Naar - ∞
• Naar 0 (afkappen)
• Naar de dichtste voorstelbare waarde
– +1 indien > 0,5
– Afkappen indien < 0,5
– Even mantisse indien = 0,5
Vlottende komma: afronden
ca2-61
Extra bits
• Om de precisie te verhogen kunnen er
bij de berekening nog 3 extra bits
gebruikt worden
– Guard bit
– Rounding bit
– Sticky bit
IEEE 754
Vlottende komma: guard bit
Vlottende komma: rounding bit
Vlottende komma: sticky bit
GRS
ca2-62
Vlottende-komma-optelling
start
Maak de twee exponenten
gelijk aan de grootste
Rond af
Tel de mantissen op
Normaliseer resultaat
Overflow
Underflow
Genormaliseerd?
exceptie
stop
ca2-63
Vlottende-komma-optelling
1.1111 x 23
15.5
+ 1.0010 x 23
+9.0
11.0001 x 23
24.5
= 1.10001 x 24
24.5
= 1.1000 x 24
24.0
ca2-64
Vlottende-komma-optelling
1.1111 x 23
15.5
+ 1.0010 x 21
+ 0.010010 x 23
+2.25
+2.25
10.001110 x 23
17.75
= 1.0001110 x 24
17.75
= 1.0010 x 24
18
ca2-65
Vlottende-komma-aftrekking
1.0001 x 24
- 1.0010 x 21
- 0.0010010 x 24
0.1110110 x 24
1.110110 x 23
1.1110 x 23
17.0
-2.25
-2.25
14.75
14.75
15
ca2-66
Vlottende-komma-aftrekking
1.0010 x 24
- 1.0010 x 21
- 0.0010010 x 24
0.1111110 x 24
1.111110 x 23
10.0000 x 23
1.0000 x 24
18.0
-2.25
-2.25
15.75
15.75
16
16
ca2-67
Vlottende-komma-optelling
Berekeningen in vlottende-kommagetallen
zijn benaderingen
Bewerkingen zijn niet steeds reversibel.
Associativiteit geldt niet
B.v. precisie van 4 decimalen
0.001 + (1000 - 1000) = 0.001 + 0 = 0.001
(0.001 + 1000) - 1000 = 1000 - 1000 = 0
ca2-68
Vlottende-kommavermenigvuldiging
1.1111 x 23
15.5
x 1.0010 x 23
x 9.0
10.00101110 x 23+3
139.5
= 1.000101110 x 27
139.5
= 1.0001 x 27
136.0
ca2-69
Overzicht
•
•
•
•
•
•
•
Logische operaties op bits en bitstrings
Hexadecimale representatie
Voorstelling van natuurlijke getallen
Voorstelling van gehele getallen
Voorstelling van reële getallen
Voorstelling van lettertekens
Voorbeelden
ca2-70
Voorstelling lettertekens
 ASCII = American Standard Code for
Information Interchange
 EBCDIC = Extended Binary Coded
Decimal Interchange Code
 UCS = Universal character set (ISO/IEC
10646)
Per uniek teken: 1 code point: U+0065 = ‘e’;
U+00E9 = ‘é’; U+25A0=‘■’
ca2-71
Ascii-tabel
00
10
20
30
40
50
60
70
0
NUL
DLE
SP
0
@
P
`
p
1
SOH DC1
!
1
A
Q
a
q
2
STX
DC2
“
2
B
R
b
r
3
ETX
DC3
#
3
C
S
c
s
4
EOT
DC4
$
4
D
T
d
t
5
ENQ NAK
%
5
E
U
e
u
6
ACK SYN
&
6
F
V
f
v
7
BEL
ETB
‘
7
G
W
g
w
8
BS
CAN
(
8
H
X
h
x
9
HT
EM
)
9
I
Y
i
y
A
LF
SUB
*
:
J
Z
j
z
B
VT
ESC
+
;
K
[
k
{
C
FF
FS
,
<
L
\
l
|
D
CR
GS
-
=
M
]
m
}
E
SO
RS
.
>
N
^
n
~
F
SI
US
/
?
O
_
o
DEL
ca2-72
Coderingen
Voorstelling
U+0065
U+00E9
U+25A0
e
é
■
LATIN SMALL
LETTER E
LATIN SMALL
BLACK SQUARE
LETTER E WITH
ACUTE
Decimaal
101
233
9632
UTF-8
0x65
0xC3A9
0xE296A0
UTF-16
0x0065
0x00E9
0x25A0
UTF-32
0x00000065
0x000000E9
0x000025A0
Alt 101
Alt 0233
Alt 130
Alt 9632
Alt 254
“\u0065”
“\u00E9”
“\u25A0”
&#x65 / &#101
&#xe9 / &#233
&#x25a0 /
&#9632
Windows
C
html
ca2-73
Overzicht
•
•
•
•
•
•
•
Logische operaties op bits en bitstrings
Hexadecimale representatie
Voorstelling van natuurlijke getallen
Voorstelling van gehele getallen
Voorstelling van reële getallen
Voorstelling van lettertekens
Voorbeelden
ca2-74
Interpretatie
10010000100100000000000000000000
Bitpatroon: 10010000100100000000000000000000
Natuurlijk getal:
242535628810
Geheel getal:
-186961100810
BCD:
9090000010
Letters:
ÉÉ  
Vlottende komma: -5.67979851 x 10-29
De betekenis van een bitpatroon hangt af van
de context
ca2-75
Enkele belangrijke getallen
20
=1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
byte
binair
0  255
2-compl -128  127
Woord
binair
0  65535
2-compl -32768  32767
-1 = 1111 11112 = FF16
= 1111 1111 1111 11112
= FF FF16
ca2-76
Oefening
Gegeven het bitpatroon 01100111
Wat is hiervan de waarde als
• Binair getal
• Teken-grootte notatie
• 1-complementgetal
• 2-complementgetal
• Verschoven representatie (bias = 50)
• Binair vaste komma (2 bits na komma)
• BCD-getal
• Ascii-teken
• Vlottende-kommagetal (1|3|4, bias=3)
ca2-77
Oefening
Stel het getal -75 voor in 16 bits (in hex)
• Teken grootte notatie
• 1-complement
• 2-complement
• Verschoven representatie (bias = 100)
• BCD 9-complement
• BCD 10-complement
• Vlottende komma-getal (1|5|10, bias 15)
ca2-78
Pauze
ca2-79
Download