Rechnerstrukturen - LS12

Werbung
Rechnerstrukturen
Michael Engel und Peter Marwedel
TU Dortmund, Fakultät für Informatik
SS 2013
Hinweis: Folien a. d. Basis von Materialien von Gernot Fink und Thomas Jansen
Repräsentation von Daten
11. April 2013
1
Repräsentation von Daten
Repräsentation natürlicher Zahlen (Wiederholung)
Repräsentation von Texten
Repräsentation ganzer Zahlen
Repräsentation rationaler Zahlen
Repräsentation anderer Daten
Repräsentation von Daten
b-adische Darstellung – Eigenschaften
Theorem
Für jede Basis b ∈ N \ {1} und jede natürliche Zahl n ∈ N lässt
sich n eindeutig darstellen als
0
1
l
n = n0 · b + n1 · b + · · · + nl · b =
l
X
ni · b i
i =0
mit l ∈ N0 , n0 , n1 , . . . , nl ∈ {0, 1, . . . , b − 1} und nl > 0.
Repräsentation von Daten
Umrechnung Basis 10
Basis b
Algorithmus 1
Eingabe Basis b ∈ N \ {1}, Betragszahl n ∈ N
Ausgabe Repräsentation (nl nl−1 · · · n1 n0 )b
1. l := −1
2. So lange n > 0 gilt
l := l + 1
3.
nl := n − b · ⌊n/b⌋
4.
n := ⌊n/b⌋
5.
16
16
b
n 38 835 2 427
−1
0
l
n0
3
n1
n2
also 38 835 = (9 7 B 3)16
n3
Repräsentation von Daten
16
151
1
3
B
16
9
2
3
B
7
16
0
3
3
B
7
9
Umrechnung Basis 10
Basis b
Algorithmus 1
Eingabe Basis b ∈ N \ {1}, Betragszahl n ∈ N
Ausgabe Repräsentation (nl nl−1 · · · n1 n0 )b
1. l := −1
2. So lange n > 0 gilt
l := l + 1
3.
nl := n − b · ⌊n/b⌋
4.
n := ⌊n/b⌋
5.
Definition
Unter einem Algorithmus (auch Lösungsverfahren) versteht man
eine genau definierte Handlungsvorschrift zur Lösung eines
Problems oder einer bestimmten Art von Problemen in endlich
vielen Schritten.
Repräsentation von Daten
Quelle: Wikipedia
Repräsentation von Texten
Wir können alles aufschreiben.“
”
⇒ Repräsentation von Texten zentral
naiver Ansatz
Codierung A
0, B
1, . . .
und dann Binärcodierung
Probleme
◮
Welche Zeichen sollen codiert werden?
◮
Wie kann man Daten mit anderen austauschen?
Lösung
Standards
Repräsentation von Daten
ASCII
American Standard Code for Information Interchange
◮
verabschiedet 1963 von der American Standards Organization
(ASO)
◮
7 Bit Code
◮
für die USA gedacht
◮
codiert Zeichen und Steuercodes
Repräsentation von Daten
ASCII
0000...
0001...
0010...
0011...
0100...
0101...
0110...
0111...
1000...
1001...
1010...
1011...
1100...
1101...
1110...
1111...
....000
NUL
BS
DLE
CAN
Repräsentation von Daten
(
0
8
@
H
P
X
‘
h
p
x
....001
SOH
HT
DC1
EM
!
)
1
9
A
I
Q
Y
a
i
q
y
....010
STX
LF
XON
SUB
′′
∗
2
:
B
J
R
Z
b
j
r
z
....011
ETX
VT
DC3
ESC
#
+
3
;
C
K
S
[
c
k
s
{
....100
EOT
FF
XOF
FS
$
,
4
<
D
L
T
\
d
l
t
|
....101
ENQ
CR
NAK
GS
%
5
=
E
M
U
]
e
m
u
}
....110
ACK
SO
SYN
RS
&
.
6
>
F
N
V
∧
f
n
v
∼
....111
BEL
SI
ETB
US
’
/
7
?
G
O
W
g
o
w
DEL
ASCII
Problem
Lösung
viele wichtige Zeichen fehlen
längere Codierung“, Code erweitern
”
Anmerkung
Erweitern ist besser als ersetzen.
bekannteste Erweiterung hier
Repräsentation von Daten
ISO-8859-1
auch ISO Latin 1 genannt
ISO-8859-1 (ISO Latin 1)
International Organization for Standardization
(gegründet 1947)
ISO Latin 1
◮
8 Bit Code (8 Bits nennt man 1 Byte)
◮
enthält viele Sonderzeichen für westeuropäische Sprachen (z. B.
Umlaute (ä, ö, ü, . . . ))
◮
enthält nicht alle gewünschten Zeichen (z. B. e, japanische
Schriftzeichen, . . . )
Repräsentation von Daten
Unicode
aktueller Standard Unicode 6.2 (26. September 2012)
◮
verwaltet vom Unicode-Konsortium (http://www.unicode.org)
◮
unterstützt verschiedene Codierungsformate (Unicode
Transformation Format): UTF-8, UTF-16, UTF-32 mit 8, 16, 32
Bits
◮
längere Formate erweitern kürzere Formate
◮
vereinbart auch weitere Informationen (z. B. Schreibrichtung,
Kombination von Zeichen (Codepoints))
Repräsentation von Daten
Repräsentation ganzer Zahlen
Wunsch
ganze Zahlen z ∈ Z repräsentieren können
Vereinbarung
feste Repräsentationslänge l
Wie viele verschiedene Zahlen kann man so höchstens
repräsentieren?
l Positionen, jeweils 2 Möglichkeiten
⇒ 2l verschiedene Bitmuster der Länge l
Wie Zahlenbereich verwenden – positive und negative Zahlen
unterscheiden?
Repräsentation von Daten
Vorzeichenbetragsmethode
erstes Bit
restliche Bits
Vorzeichen
Betragszahl (Binärdarstellung)
Vorzeichenbit
s = 1 ⇔ Vorzeichen negativ
Zahl = (−1)s · Betragszahl“
”
kleinste darstellbare Zahl − 2l−1 − 1
größte darstellbare Zahl
2l−1 − 1
Begründung
+
+
−
−
Eigenschaften
symmetrisch
Vorzeichenwechsel einfach
0 nicht eindeutig
Vergleich von Zahlen schwierig
Repräsentation von Daten
Darstellung mit Bias (Exzessdarstellung)
Wähle feste Verschiebung b (Bias).
z wird als z + b dargestellt (Binärdarstellung)
übliche Werte für Bias b = 2l−1 oder b = 2l−1 − 1
kleinste darstellbare Zahl
größte darstellbare Zahl
+
+
+
+
−
−
−b
2l − 1 − b
Eigenschaften
0 eindeutig
alle Codes ausgenutzt
Vergleich von Zahlen einfach
bei üblichem Bias erstes Bit vorzeichenbitanalog
nicht symmetrisch
Vorzeichenwechsel schwierig
Repräsentation von Daten
Einerkomplementdarstellung
nicht-negative Zahlen
negative Zahlen
Binärdarstellung
Komplement der Binärdarstellung
kleinste darstellbare Zahl
größte darstellbare Zahl
+
+
−
−
−
− 2l−1 − 1
2l−1 − 1
Eigenschaften
symmetrisch
erstes Bit wie Vorzeichenbit
0 nicht eindeutig
Verschwendung“ eines Codes
”
Vergleich von Zahlen schwierig
Repräsentation von Daten
Zweierkomplementdarstellung
nicht-negative Zahlen
negative Zahlen
Binärdarstellung
(Komplement der Binärdarstellung) + 1“
”
kleinste darstellbare Zahl
größte darstellbare Zahl
+
+
+
−
◮
− 2l−1
2l−1 − 1
Eigenschaften
0 eindeutig repräsentiert
erstes Bit wie Vorzeichenbit
alle Codes ausgenutzt
Vergleich von Zahlen schwierig
üblichste Darstellung
Repräsentation von Daten
Zweierkomplementdarstellung II
Beachte: Ex. geschlossene Form zur Berechnung der im
Zweierkomplement repräsentierten Zahl
Theorem
Ein Bitvektor a = (an−1 , ..., a0 ) repräsentiert bei einer Kodierung
im Zweierkomplement die Zahl
int(a) = −an−1 2n−1 +
n−2
X
ai 2i
i =0
Z.B.: int(1101) = −1 · 23 + 1 · 20 + 0 · 21 + 1 · 22 =
(−3)10
Repräsentation von Daten
Zweierkomplementdarstellung III
Hinweis: Für die Zahlendarstellung im Zweierkomplement
ergibt sich folgendes “Zahlenrad”
1...110
1...111
0...000
0...001
0...010
Repräsentation von Daten
Ganzzahlen
negativ
10...000
01...111
positiv
Bereichsüberschreitung
Bereichsüberschreitung
2er−Komplement
Alles verstanden?
haben
l = 5, b = 2l−1 = 24 = 16, z = 10010
Welche Zahl wird denn nun repräsentiert?
Beobachtung
Das hängt von der Darstellung ab.
Vorzeichenbetragsdarstellung
1
|{z}
0010
| {z }
Vorzeichen Betrag
(0010)2 = 0 · 20 + 1 · 21 = 2
also (−1)1 · 2 = −2
Repräsentation von Daten
Alles verstanden?
haben
l = 5, b = 2l−1 = 24 = 16, z = 10010
Welche Zahl wird denn nun repräsentiert?
Beobachtung
Das hängt von der Darstellung ab.
Darstellung mit Bias b = 16 (Exzessdarstellung)
(10010)2 = 0 · 20 + 1 · 21 + 0 · 22 + 0 · 23 + 1 · 24 = 2 + 16 = 18
also |{z}
18 − |{z}
16 = 2
Zahl
Repräsentation von Daten
Bias
Alles verstanden?
haben
l = 5, b = 2l−1 = 24 = 16, z = 10010
Welche Zahl wird denn nun repräsentiert?
Beobachtung
Das hängt von der Darstellung ab.
Einerkomplementdarstellung
erstes Bit 1, also negativ
Komplement 10010 = 01101
(01101)2 = 1 · 20 + 0 · 21 + 1 · 22 + 1 · 23 = 1 + 4 + 8 = 13
also −13
Repräsentation von Daten
Alles verstanden?
haben
l = 5, b = 2l−1 = 24 = 16, z = 10010
Welche Zahl wird denn nun repräsentiert?
Beobachtung
Das hängt von der Darstellung ab.
Zweierkomplementdarstellung
erstes Bit 1, also negativ
10010 − 1 = 10001
Komplement 10001 = 01110
(01110)2 = 0 · 20 + 1 · 21 + 1 · 22 + 1 · 23 = 2 + 4 + 8 = 14
also −14
Repräsentation von Daten
Beispielsammlung Darstellungen
feste Länge l = 5, (2l = 32, 2l−1 = 16, 2l−1 − 1 = 15)
z
1
−1
0
15
−15
16
−16
VZ-Betrag
00001
10001
00000
10000
01111
11111
—
—
Repräsentation von Daten
Bias b = 16
10001
01111
10000
Bias b = 15
10000
01110
01111
11111
00001
—
00000
11110
00000
11111
—
1er-K.
00001
11110
00000
11111
01111
10000
—
—
2er-K.
00001
11111
00000
01111
10001
—
10000
Repräsentation rationaler Zahlen
Wunsch
rationale Zahlen q ∈ Q repräsentieren können
Vereinbarung
feste Repräsentationslänge l Bits
Idee wenn schon feste Darstellungslänge,
dann auch feste Position des Kommas
Beispiele l = 8, 3 Nachkommastellen
10,34
00010,340
93 847,123
93 847,123
0
00000,000
nicht darstellbar
123 456,78
12,345678
nicht darstellbar, aber runden denkbar
Repräsentation von Daten
Festkommazahlen
klar
Basis 10 für uns nicht brauchbar
zum Glück
Übertragung auf Basis 2 ganz einfach
Beispiel
24
= 16
1
16
= 22,625
23
=8
0
22
=4
1
+4
21
=2
1
+2
20
=1
0,
2−1
= 0,5
1
+0,5
2−2
= 0,25
0
allgemein bei v Vorkomma- und m Nachkommastellen
vP
−1
zi · 2i
z=
i =−m
Repräsentation von Daten
2−3
= 0,125
1
+0,125
Binärdarstellung rationaler Zahlen
Beobachtung unabhängig von Darstellungslänge
nicht alle Zahlen darstellbar
Beispiel
0,2 nicht als binäre Festkommazahl darstellbar
Beweis durch Widerspruch (Annahme Doch!)
−1
P
zi · 2i mit m ∈ N, zi ∈ {0, 1}
dann 0,2 = 15 =
i =−m
1
also
5
=
m
X
z−j · 2
−j
= 2
m−1
X
zk−m · 2k =
k=0
also 5a =
2m
Repräsentation von Daten
m
X
z−j · 2m−j
| mit k = m − j
j=1
j=1
−m
=2
−m
Widerspruch
a
mit a, m ∈ N
2m
Ist die Binärdarstellung schlecht?
Nein! Es gibt für jede Basis nicht darstellbare rationale Zahlen,
die in anderen Basen darstellbar sind.
Beispiel
1
3
= (0,1)3 , zur Basis 10 nicht darstellbar
Ist Festkommadarstellung schlecht?
jedenfalls unflexibel
eher für spezielle Anwendungen geeignet
Repräsentation von Daten
Gleitkommazahlen
andere Idee
Position des Kommas nach Bedarf
z = (−1)s · m · 10e
mit s ∈ {0, 1}, e ∈ Z, m ∈ Q und 1 ≤ m < 10
◮
Exponent e bestimmt Position des Kommas
◮
Mantisse“ m
”
normalisierte Gleitkommazahlendarstellung
Repräsentation von Daten
Gleitkommazahlen
für uns besser
Basis 2
z = (−1)s · m · 2e
mit s ∈ {0, 1}, e ∈ Z, m ∈ Q und 1 ≤ m < 2
Beobachtungen
◮
◮
Mantisse“ hat immer erste Ziffer 1
”
0 ist so nicht darstellbar
immer besser
Repräsentation von Daten
an Standards halten
IEEE-754 1985
Institute of Electrical & Electronics Engineers
z = (−1)s · m · 2e
mit s ∈ {0, 1}, e ∈ Z, m ∈ Q und 1 ≤ m < 2
Festlegungen
◮
◮
◮
führende 1 der Mantisse“ wird nicht mit abgespeichert (heißt
”
implizite Eins“)
”
Mantisse in Binärcodierung (Festkommazahlen mit Ziffern
ausschließlich hinter dem Komma)
Exponent in Exzessdarstellung mit Bias b = 2le −1 − 1
Repräsentation von Daten
IEEE 754-1985
feste Anzahlen von Bits
Gesamtlänge
Vorzeichen
Exponent
Mantisse
32
1
8
23
single
64
1
11
52
double
Precision
Hinweis: In IEEE 754-2008 auch 16/128 bit Binär- sowie 32/64 bit
Dezimalformate
Besonderheiten beim Exponenten
Verkleinerung des zulässigen Bereichs
um 1 auf beiden Seiten
l
e −1
auf emin = −b + 1 = − 2
− 1 + 1,
und emax = 2le − 1 − b − 1 = 2le −1 − 1
dient der Codierung besonderer Zahlen“
”
Repräsentation von Daten
IEEE 754-1985: ein Beispiel
l = 32, ls = 1, le = 8, lm = 23
b = 27 − 1 = 127, emin = −b + 1 = −126, emax = 28 − b − 2 = 127
Wir wollen −3 darstellen.
negativ, also Vorzeichenbit 1
Darstellung als Summe von Zweierpotenzen
3 = 2 + 1 = 21 + 20 = 20 + 2−1 · 21
Exponent 1
Exzessdarstellung 1 + b = 128 darstellen
128 = (1000 0000)2
Mantisse 1,1, implizite Eins entfällt, also 100 0000 0000 · · ·
Ergebnis |{z}
1 1000
0000 0000 0000}
| {z0000} 100
| 0000 0000{z
VZ
Repräsentation von Daten
Exponent
Mantisse
IEEE 754-1985: noch ein Beispiel
l = 32, ls = 1, le = 8, lm = 23
b = 27 − 1 = 127, emin = −b + 1 = −126, emax = 28 − b − 2 = 127
Wir wollen 0,0546875 darstellen.
positiv, also Vorzeichenbit 0
Darstellung als Summe von Zweierpotenzen 0,0546875 =
1
1
1
−5 + 2−6 + 2−7 = 20 + 2−1 + 2−2 · 2−5
32 + 64 + 128 = 2
Exponent −5
Exzessdarstellung −5 + b = 122 darstellen
122 = (0111 1010)2
Mantisse 1,11, implizite Eins entfällt, also 110 0000 0000 · · ·
Ergebnis |{z}
0 0111
0000 0000 0000}
| {z1010} 110
| 0000 0000{z
VZ
Repräsentation von Daten
Exponent
Mantisse
IEEE 754-1985: ein letztes Beispiel
l = 32, ls = 1, le = 8, lm = 23
b = 27 − 1 = 127, emin = −b + 1 = −126, emax = 28 − b − 2 = 127
Wir haben 0 1011 0001 010 1001 0000 0000 0000 0000.
0000 0000 0000}
0 1011
| 1001 0000{z
|{z}
| {z0001} 010
VZ
Exponent
Mantisse
Vorzeichenbit 0, also positiv
Exponent (1011 0001)2 = 177, stellt 177 − b = 177 − 127 = 50 dar
Mantisse zuzüglich impliziter Eins 1,0101001
1
1
+ 128
(1,0101001)2 = 1 + 41 + 16
also 20 + 2−2 + 2−4 + 2−7 · 250 = 250 + 248 + 246 + 243
= 1 486 539 720 753 152
Repräsentation von Daten
IEEE 754-1985: Besondere Zahlen
VZ
0
1
s
0
1
s
Exponent
emax + 1
emax + 1
emax + 1
emin − 1
emin − 1
emin − 1
Mantisse
0
0
6= 0
0
0
m 6= 0
(−1)s
·
l
m
P
i =1
NaN not a number
Welches Bitmuster repräsentiert die Null?
letzte Zeile
Repräsentation von Daten
denormalisierte Darstellung
mi
· 2−i
Zahl“
”
+∞
−∞
NaN
0
−0
· 2emin
Wozu denormalisierte Zahlen?
klar
noch kleinere Zahlen darstellbar
Beispiel If x 6= y Then z := 1/(x − y )
x = 0 0000 0001 000 0000 0000 0000 0000 0001
2−126 + 2−149
y = 0 0000 0001 000 0000 0000 0000 0000 0000
2−126
klar x 6= y
aber ohne denormalisierte Darstellung x − y = 0 gerundet
denormalisiert x − y = 2−149 :
0 0000 0000 000 0000 0000 0000 0000 0001
auf jeden Fall besser If x − y 6= 0 Then z := 1/(x − y )
Repräsentation von Daten
Repräsentation anderer Daten
hier für uns interessant
primitive Daten“
”
(von Hardware direkt unterstützt)
zentral Programme
in der Regel Bitmuster fester Länge (z.B. 4 Byte): Befehl, Operan
Problem Was repräsentiert ein Byte im Speicher?
kaum verwendet:
Repräsentation von Daten
Typbits
Repräsentation von Datenfolgen
Speicher oft in Worten organisiert
Wort
ja nach Rechner 2 Bytes, 4 Bytes, . . .
heterogene Daten hintereinander in den Speicher schreiben
dabei manchmal Wortgrenzen beachten
dann leere Zellen (Bytes) möglich
homogene Daten
Problem
Arrays
Wie erkennt man das Ende der Folge?
◮
feste Anzahl vereinbaren
◮
Länge am Anfang speichern
◮
spezielles Endezeichen verwenden
Repräsentation von Daten
Herunterladen