Codierung

Werbung
Informationsmenge
Maßeinheit: 1 Bit
 Informationsmenge zur Beantwortung einer Binärfrage
 kleinstmögliche Informationseinheit
1 Byte
 Zusammenfassung von 8 Bit,
 kleinste Speichereinheit im Computer,
 liefert 28 = 256 Bitkombinationen
Umrechnungen:
 1 Kilobyte
= 210 Byte
= 1.024 Byte
 1 Megabyte
= 210 kB
= 1.048.576 Byte
 1 Gigabyte
= 210 MB
= 1.048.576 KB
= 1.073.741.824 Byte
 1 Terabyte
= 210 GB
= ...
Codierung 1
Codierung
 Zuordnung von Zeichen eines Alphabets zu Zeichen eines anderen
Alphabets
 Text, z.B. ASCII:




01000001
01000010
01000011
01000100
bedeutet
bedeutet
bedeutet
bedeutet
A
B
C
D
 Zahlen, z.B. Binärcode:






0000
0001
0010
0011
0100
0101
bedeutet
bedeutet
bedeutet
bedeutet
bedeutet
bedeutet
0
1
2
3
4
5
Codierung 2
Codierung
Darstellung von Text
 Zur Darstellung von Texten werden das Textalphabet und die
Satzzeichen mit Bitfolgen codiert.
 Gebräuchlichste Codierung: 7 Bit ASCII
(American Standard Code for Information Interchange)
 erweiterter ASCII: 8 Bit (einige sprachspezifische Symbole)
 UNICODE: 16 Bit (‚alle Sprachen der Welt‘)
Codierung 3
ASCII
ASCII = American Standard Code for Information Interchange
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
bl
!
"
#
$
%
&
'
(
)
*
+
,
.
/
Beispiele:
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
A
a
F
f
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
065
097
070
102
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
del
0100 0001
0110 0001
0100 0110
0110 0110
Codierung 4
Codierung
Darstellung von Zahlen
 Für die maschinelle Verarbeitung von Zahlenwerten ist eine binäre
Codierung sehr gut geeignet.
 Als Alphabet werden häufig die Zeichen { 0,1 } verwendet.
 In der elektronischen Realisierung entspricht z.B.
0 : Spannung < 1.5 Volt
1 : Spannung > 3.5 Volt
 Alle Berechnungen werden zur Basis 2 (Dual-, Binärsystem)
durchgeführt.
Codierung 5
Arithmetische Operationen
Elementare Zahlenarten:
 Natürliche Zahlen (positiv, z.B. 1, 2, 3, …)
 Ganze Zahlen (positiv und negativ,
z.B. -5, 0, 2, 42, …)
 Rationale Zahlen (z.B. -2/3, 7/2, 13/17, …)
 Reelle Zahlen (ganze und rationale sowie irrationale Zahlen wie 
oder 2)
Codierung 6
Zahlensysteme: Dezimalsystem
Darstellung von ganzen Zahlen
 Jede Ziffer innerhalb einer Zahl besitzt einen Ziffernwert und
einen Stellenwert.
 Beispiel:
1235
=
+
+
+
5*1
3 * 10
2 * 100
1 * 1000
=
5 * 100
+ 3 * 101
+ 2 * 102
+ 1 * 103
Ziffernwert * Stellenwert
Codierung 7
Zahlensysteme: Dezimalsystem
 Verallgemeinerung für das Dezimalsystem:
 Der Zahlenwert a ist die Summe über alle Stellen i = 0, ..., n
der einzelnen Produkte aus Ziffernwert zi und Stellenwert 10i
 Also:
n
a
=

z i * 10 i
i=0
Codierung 8
Zahlensysteme: Beliebiges Zahlensystem
 Verallgemeinerung für ein beliebiges Zahlensystem :
 Für ein beliebiges Zahlensystem gilt :
n
a
=

zi*Bi
i=0
Hierbei ist B die Basis des Zahlensystems und die darin gültigen
Ziffern zi können die Werte 0,1,..., B-1 annehmen.
Codierung 9
Arithmetische Operationen
Darstellung ganzer Zahlen




Dezimalsystem: 0,…,9
Zur binären Darstellung der 10 Ziffern werden 4 Bits benötigt.
Mit 4 Bits können 16 Ziffern codiert werden.
Für die weiteren 6 Ziffern werden die Zeichen A,…,F eingeführt und
der Hexadezimalcode definiert.





Zahlensystem
Dualsystem
Oktalsystem
Dezimalsystem
Hexadezimalsystem
Basiszahl
2
8
10
16
Zeichenvorrat
0,1
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7,8,9
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Codierung 10
Ganze Zahlen (ohne Vorzeichen)
a =

zi * Bi
Wertebereich:
0  a  2n - 1
Codierung 11
Ganze Zahlen (ohne Vorzeichen)
Beispiel Umrechnung in Basis 2
(235)10 = (a)2
235 : 2 = 117,
117 : 2 = 58,
58 : 2 = 29,
29 : 2 = 14,
14 : 2 = 7,
7 : 2 = 3,
3 : 2 = 1,
1 : 2 = 0,
Rest 1
Rest 1
Rest 0
Rest 1
Rest 0
Rest 1
Rest 1
Rest 1
20 * 1
21 * 1
22 * 0
23 * 1
24 * 0
25 * 1
26 * 1
27 * 1
=
=
=
=
=
=
=
=
1 +
2+
8+
32 +
64 +
128
11101011 = (235)10
Codierung 12
Ganze Zahlen (ohne Vorzeichen)
Beispiel Umrechnung in Basis 8
(235)10 = (a)8
235 : 8 = 29,
29 : 8 = 3,
3 : 8 = 0,
Rest 3
Rest 5
Rest 3
80 * 3
81 * 5
82 * 3
=
=
=
3+
40 +
192 +
3538 = (235)10
Codierung 13
Ganze Zahlen (mit Vorzeichen)
Wertebereich:
-2n-1+1  a  2n-1 -1
 Most Significant Bit (MSB) definiert das Vorzeichen.
 Vorzeichen muss gesondert ausgewertet werden.
 Zwei Darstellungen der 0, nämlich +0 und -0
Codierung 14
Ganze Zahlen (mit Vorzeichen)
Binary Offset
Der kleinstmögliche
Wert wird mit 0000…
und der größtmögliche
Wert wird mit 1111…
dargestellt.
Wertebereich:
-2n-1  a  2n-1 -1
a = D – O;
D: binäre Darstellung, Offset O = 8
Nur eine Darstellung der 0.
Findet Verwendung beim Exponent der IEEE 754
Codierung 15
Ganze Zahlen im Einerkomplement
Most Significant Bit (MSB)
definiert das Vorzeichen.
positive Zahl: MSB = 0,
Die drei niederwertigen Bits
werden wie gewohnt
ausgewertet
negative Zahl: MSB = 1,
Die drei niederwertigen Bits
werden invertiert und
anschließend ausgewertet
Wertebereich:
-2n-1+1  a  2n-1 -1
Codierung 16
Ganze Zahlen im Einerkomplement
Beispiel Einerkomplement





-3 soll binär als Einerkomplement dargestellt werden
binäre Darstellung des Betrags
(3)10 = (0011)2
Setzen des Vorzeichens und Komplement der Bits
(-3)10 = (1100)2-1K
Codierung 17
Ganze Zahlen im Zweierkomplement
Most Significant Bit (MSB)
definiert das Vorzeichen.
positive Zahl: MSB = 0,
Die drei niederwertigen Bits
werden wie gewohnt
ausgewertet.
Wertebereich:
-2n-1  a  2n-1 -1
negative Zahl: MSB = 1,
Die drei niederwertigen Bits
werden invertiert,
1 addiert und
anschließend ausgewertet.
Codierung 18
Ganze Zahlen im Zweierkomplement
Vorteil der Zweierkomplement-Darstellung
 Es existiert nur eine Null.
 Null ist zu sich selbst Komplement
 (0000)2k = (0000)1k + 1 = FFFF +1 = 0
 Das Vorzeichenbit muss für Addition und Subtraktion nicht
gesondert ausgewertet werden.
 Signifikante Vereinfachung der Berechnung.
 Zweierkomplement wird in der Praxis fast ausschließlich eingesetzt.
Codierung 19
Addition und Subtraktion
Addition:
0 + 0 = 0,
1 + 0 = 1,
0 + 1 = 1,
1 + 1 = 0,
kein Übertrag (‚Carry‘)
kein Übertrag
kein Übertrag
Übertrag 1
Subtraktion:
0 - 0 = 0, kein Übertrag
1 - 0 = 1, kein Übertrag
0 - 1 = 1, Übertrag 1
1 - 1 = 0, kein Übertrag
Codierung 20
Beispiele Addition und Subtraktion
Ganze Zahlen ohne Vorzeichen
610
+ 310
C
= 910
0110
0011
110
1001
610
- 310
C
= 310
0110
0011
011
0011
Ganze Zahlen mit Vorzeichen (Zweierkomplement)
610
0110
+(-310) 1101
C
100
= 310
10011
310
+(-610)
C
=-310
0011
1010
010
1101
Codierung 21
Beispiele Addition und Subtraktion
Ganze Zahlen ohne Vorzeichen
1510
+ 110
C
=1610
1111
0001
111
10000
Übertrag
(Carry, C, CY)
Überlauf
(Overflow, O, OV)
Ganze Zahlen mit Vorzeichen (Zweierkomplement)
610
+ 210
C
=-810?
0110
0010
110
1000
-710
1001
+(-610) 1010
C
000
=+310? 10011
Codierung 22
Addition und Subtraktion
Übertrag (Carry)
 Ein Übertrag entsteht, wenn bei Operationen mit nur positiven
Zahlen der Wertebereich überschritten wird.
Codierung 23
Addition und Subtraktion
Überlauf (Overflow)
 Ein Überlauf entsteht, wenn bei Operationen von Zweierkomplement-Zahlen der Wertebereich überschritten wird.
 Ein Überlauf liegt dann vor, wenn beide Summanden das gleiche
Vorzeichen haben und das Ergebnis ein anderes.
Codierung 24
Rationale Zahlen
 Bisher haben wir die binäre Darstellung der ganzen Zahlen
kennen gelernt: Integer
n
a
=

zi*Bi
i=0
mit B = 2
 Darstellung gebrochener Zahlen (Rationaler Zahlen):
 Festkomma-Darstellung
 Fließkomma-Darstellung (Floating Point)
Codierung 25
Rationale Zahlen
Festkomma-Zahlen
a
in

i  m
zi bi
 znb n  zn 1b n 1... z1b  z0  z1b 1  ... z mb  m
n+1 Bits für Vorkomma-, m Bits für Nachkommastellen
 Es ist Konvention, die Ziffern mit absteigendem Index i als Liste
darzustellen und zwischen z0 und z-1 ein Komma einzufügen.
a  z3  b 3  z 2  b 2  z1  b1  z0  b 0 
z 1  b 1  z  2  b  2  z 3  b 3  z  4  b  4
Codierung 26
Rationale Zahlen
(123,4567)10  0 1000  1100  2 10  3  1 
4
5
6
7



10 100 1000 10000
in gleicher Weise kann man binäre Zahlen darstellen:
1 1 0 1
(1001,1101) 2  1 8  0  4  0  2  1 1    
2 4 8 16
In diesem Beispiel ist also (1001,1101)2 = (9,8125)10
 Bei Festkomma-Zahlen ist der Wertebereich stark
eingeschränkt!
Codierung 27
Umwandlung von Nachkommastellen einer Dezimalzahl
Beispiel (0,28125)10 :
0,28125*2 = 0,5625
0,5625*2
= 1,125
0,125*2
= 0,25
0,25*2
= 0,5
0,5*2
= 1,0
(0,28125)10 = (0,01001)2
Codierung 28
Beispiel Zweierkomplement Festkommazahl
 Umwandlung binär  dezimal, MSB = 1
 a = (1011,0110)2
 falls MSB = 1  Zahl ist negativ,
dann
 Betrag berechnen
 Komplement aller Bits, 1 addieren
  (1011,0110)2-2K = (0100,1001)2 +(1)2
= (0100,1010)2
 |a| = (4,625)10
 Vorzeichen negativ
 a = -4,625
Codierung 29
Beispiel Zweierkomplement Festkommazahl
Umwandlung dezimal  binär, a < 0
a = (-4,625)10
falls a < 0  Zahl ist negativ,
dann
Betrag berechnen:
Vorkomma
Nachkomma
4:2 = 2, R=0
0,625* 2 = 1, r=0,25
2:2 = 1, R=0
0,25 * 2 = 0, r=0,5
1:2 = 0, R=1
0,5 * 2 = 1, r=0
 |a| = 0100,1010
 Komplement aller Bits, 1 addieren
  (0100,1010)2-2K = (1011,0101)2 +(1)2
= (1011,0110)2
a = (1011,0110)2
Codierung 30
Rechnerinterne Darstellung einer Fließkomma-Zahl
 Allgemeine Darstellung:
z = (-1)s  1.f  2 e-o
 s = Vorzeichen (Signum, sign, 0 = positiv, 1 = negativ)
 f = Fraktion, fraction
 e = Exponent
 o = Offset (127 bzw. 1023) wg. Wertebereich 
 1.f: normalisierte Darstellung: 1 vor Binärpunkt ist implizit, d.h. wird
angenommen, nicht dargestellt
 0.f: denormalisierte Darstellung: in besonderen Fällen wird keine
binäre 1 angenommen.
Codierung 31
Rechnerinterne Darstellung einer Fließkomma-Zahl
 Beispiel: Darstellung von 45.62510
 Vorgehensweise:
 binäre Darstellung der Vorkommastellen
 binäre Darstellung der Nachkommastellen
  binäre Darstellung der Zahl
 Normalisierung und Bestimmung Exponent
 Darstellung von Fraktion f
 Darstellung des Exponenten e
 Bestimmung des Vorzeichens s
Codierung 32
Rechnerinterne Darstellung einer Fließkomma-Zahl
Beispiel Fließkomma-Zahl
4510 = 1011012
Nachkommastellen
0.6252 = 1.25
0.25 2 = 0.5
0.5 2 = 1.0
0.62510 = 1012  2-3
= 0.1012
45.62510 = 45 + 0.625
= 101101.1012
101101.1012 =
1.011011012  2+5
normalisiert, E = 5
Bestimmung Fraktion
1.01101101, also
f = 01101101
dargestellter Exponent e:
E = e-o
e = E+o; o=127 (single)
= 5+127
= 132
= 100001002
Vorzeichen s = 0 (pos)
Codierung 33
Rechnerinterne Darstellung einer Fließkomma-Zahl
Beispiel: 45.62510
Fraktion f = 01101101 (beachte 1.01101101)
bit 0-22
dargestellter Exponent e = 10000100
bit 23-30
Vorzeichen s = 0
bit 31
Damit ist die Darstellung im IEEE 754-Format mit einfacher Genauigkeit
(single precision – 32 Bit):
0100 0010 0011 0110 1000 0000 0000 0000
entspricht hexadezimal
42 36 80 00
Codierung 34
Rechnerinterne Darstellung einer Fließkomma-Zahl
Spezielle Werte:
 Zahl Null kann nicht direkt dargestellt werden. Darstellung durch
e=0 und f=0
 Unendlich, Infinity
Darstellung alle Bits im Exponenten 1, f=0;
Unterscheidung von Infinity durch s=0 oder 1
 Not-a-Number NaN, Darstellung ist keine Zahl.
Darstellung alle Bits im Exponenten 1, f0;
 Beispiele:
 ±nichtnull / 0 = ±Infinity
 ±Infinity / ±Infinity = NaN
Codierung 35
Rechnerinterne Darstellung einer Fließkomma-Zahl
Formatspezifikationen der IEEE 754
Codierung 36
Herunterladen