3 Rechnen mit Bin¨ arzahlen
3.1 Darstellung von Bin¨ arzahlen
Seit der Schule sind wir mit unserem klassischen Dezimalsystem wohlvertraut.
Im Dezimalsystem l¨asst sich jede Zahl als Summe von Zehnerpotenzen darstellen, z.B.:
9103 = 9·1000 + 1·100 + 0·10 + 3·1
= 9·103+ 1·102+ 0·101+ 3·100 274 = 2·100 + 7·10 + 4·1
= 2·102+ 7·101+ 4·100
Allgemein k¨onnen wir jede nat¨urliche Zahl im Dezimalsystem darstellen als anan−1. . . a1a0 =an·10n+an−1·10n−1+. . .+a1·101+a0·100 =
n
i=0
ai ·10i
mit den Ziffernai ∈ {0,1, . . . ,9}.
Schreibweise: Um zu kennzeichnen, dass eine Zahl als Dezimalzahl interpretiert werden soll, verwenden wir den Index 10 und schreiben
z10 =anan−1. . . a1a0 =
n
i=0
ai·10i
Die Darstellung von Zahlen als Summe von Zehnerpotenzen l¨asst sich auf andere Potenzen ¨ubertragen. Z.B. k¨onnen wir die Zweierpotenzen betrachten. Als Ziffern stehen uns dann 0 und 1 zur Verf¨ugung. Dann gilt z.B.
101 = 1·22+ 0·21+ 1·20
11001 = 1·24+ 1·23+ 0·22+ 0·21+ 1·20 1000 = 1·23+ 0·22+ 0·21+ 0·20
Allgemein k¨onnen wir jede Zahl im Zweiersystem darstellen als anan−1. . . a1a0 =an·2n+an−1·2n−1+. . .+a1·21+a0·20 =
n
i=0
ai·2i
mit den Ziffernai ∈ {0,1}. Diese Zahlen im Zweiersystem heißenBin¨arzahlen.
Schreibweise: Um zu kennzeichnen, dass eine Zahl als Bin¨arzahl interpretiert werden soll, verwenden wir den Index 2 und schreiben
z2 =anan−1. . . a1a0 =
n
i=0
ai·2i
Im obigen Beispiel k¨onnen wir die Bin¨arzahlen ganz einfach in Dezimalzahlen umrechnen:
1012 = 1·22+ 0·21+ 1·20 = 510
110012 = 1·24+ 1·23+ 0·22+ 0·21+ 1·20 = 2510 10002 = 1·23+ 0·22+ 0·21+ 0·20 = 810
Will man umgekehrt eine Dezimalzahl in eine Bin¨arzahl umrechnen, muss man pr¨ufen, welche Zweierpotenzen in der Dezimalzahl stecken, z.B.
4110 = 32 + 8 + 1
= 1·25+ 0·24+ 1·23+ 0·22+ 0·21+ 1·20
= 1010012
6310 = 32 + 16 + 8 + 4 + 2 + 1
= 1·25+ 1·24+ 1·23+ 1·22+ 1·21+ 1·20
= 1111112
Bin¨arzahlen spielen in der Informatik und in der digitalen Signalverarbeitung eine wichtige Rolle. Alle Zahlen im Computer werden letztendlich als Bin¨arzahlen dargestellt. 1 bedeutet: Strom fließt, 0 bedeutet: Strom fließt nicht.
Ganz allgemein lassen sich beliebigep-Zahlensysteme konstruieren: Sie ben¨otigen pverschiedene Zeichen und k¨onnen dann einep-Zahl als Summe von p-Potenzen wie folgt definieren:
zp =anan−1. . . a1a0 =an·pn+an−1·pn−1+. . .+a1·p1+a0·p0 =
n
i=0
ai·pi
mit den Zeichen ai ∈ {0,1, . . . , p−1}.
Neben dem Dezimalsystem (p=10) und dem Bin¨arsystem (p=2) spielen in der Informatik noch folgende Zahlensysteme eine Rolle:
• Oktalzahlen:p= 8, ai ∈ {0,1,2,3,4,5,6,7}, z.B.
1758 = 1·82+ 7·81+ 5·80 = 6410+ 5610+ 510 = 12510 2638 = 2·82+ 6·81+ 3·80 = 12810+ 4810+ 310 = 17910
558 = 5·81+ 5·80 = 4010+ 510 = 4510
• Hexadezimalzahlen: p= 16, ai ∈ {0,1, . . . ,8,9, A, B, C, D, E, F}, z.B.
4A16 = 4·161+A·160 = 6410+ 1010 = 7410
3.2 Rechnen mit Bin¨ arzahlen
In den n¨achsten beiden Abschnitten lernen wir, wie man Bin¨arzahlen addiert und multipliziert.
3.2.1 Addition
F¨ur die Addition zweier Bin¨arzahlen gilt folgende Additionstabelle:
+ 0 1
0 0 1
1 1 0 (merke 1) Beispiele:
111 1112 = 22+ 21+ 20 = 710 1101 11012 = 23+ 22+ 20 = 1310
1 1 1 1
10100 101002 = 24+ 22 = 2010
Andererseits ist auch 710+ 1310 = 2010
101100 1011002 = 25+ 23+ 22 = 4410
+ 111011 1110112 = 25+ 24+ 23+ 21+ 20 = 5910
1 1 1
1100111 11001112 = 26+ 25+ 22+ 21+ 20 = 10310 Andererseits ist auch 4410+ 5910 = 10310
1000100 10001002 = 26+ 22 = 6810
+ 1010101 10101012 = 26+ 24+ 22+ 20 = 8510
1 1
10011001 100110012 = 27 + 24+ 23 + 20 = 15310 Andererseits ist auch 6810+ 8510 = 15310 Weitere Aufgaben zum ¨Uben:
10010 + 110 =
1101 + 1101 =
111 + 10101 = 11111 + 11111 = 1100101 + 1001101 = 11100 + 100010 =
3.2.2 Multiplikation
F¨ur die Multiplikation zweier Bin¨arzahlen gilt folgende Multiplikationstabelle:
· 0 1 0 0 0 1 0 1 Beispiele:
1101·1001 11012 = 23+ 22+ 20 = 1310 1101000 10012 = 23+ 20 = 8 + 1 = 910
1101
1
1110101 11101012 = 26+ 25 + 24+ 22+ 20 = 11710 Andererseits ist auch 1310·910 = 11710
110011·101010 1100112 = 25+ 24+ 21+ 20 = 5110 11001100000 101010 = 25+ 23+ 21 = 4210
110011000 1100110
1 1 1 1 1 1
100001011110 211+ 26+ 24+ 23+ 22+ 21 = 214210 Andererseits ist auch 5110·4210= 214210
Weitere Aufgaben zum ¨Uben:
10010 · 110 =
1101 · 1101 = 111 · 10101 = 11111 · 11111 = 1100101 · 1001101 = 11100 · 100010 =
3.3 Zweierkomplement
Im Computer stehen nur endlich viele Stellen f¨ur die Darstellung von Zahlen zur Verf¨ugung. Wir wollen untersuchen, wie viele Zahlen man damit codieren kann, d.h. welchen Zahlenbereich man damit darstellen kann.
Betrachten wir zun¨achst den einfachen Fall, dass uns 3 Bits zur Verf¨ugung stehen.
Dann k¨onnen wir insgesamt 23 = 8 Zahlen darstellen, n¨amlich die Zahlen von 0
000 − 0 100 − 4
001 − 1 101 − 5
010 − 2 110 − 6
011 − 3 111 − 7
Wir k¨onnten jedoch auch das erste Bit verwenden, um ein Vorzeichen zu codieren:
0 bedeutet + und 1 bedeutet−. Dann stehen f¨ur die Darstellung der eigentlichen Zahl nur zwei Bits zur Verf¨ugung, und zwar wird festgelegt:
000 − 0 100 − −4
001 − 1 101 − −3
010 − 2 110 − −2
011 − 3 111 − −1
Auch in diesem Fall k¨onnen wir 23 = 8 Zahlen codieren und zwar die Zahlen von
−4 bis 3. Diese Festlegung f¨ur die Darstellung negativer Bin¨arzahlen nennt man Zweierkomplement.
Mit dem Zweierkomplement k¨onnen wir wie gewohnt rechnen:
010 = (3 + (−3))10 = 0112+ 1012 = (1000)2 = 0002 010 = (2 + (−2))10 = 0102+ 1102 = (1000)2 = 0002 010 = (1 + (−1))10 = 0012+ 1112 = (1000)2 = 0002
Wenn uns statt drei Bit vier Bit zur Verf¨ugung stehen, dann k¨onnen wir insgesamt 24 = 16 Zahlen darstellen, und zwar entweder die positiven Zahlen von 0 bis 15:
0000 − 0 1000 − 8
0001 − 1 1001 − 9
0010 − 2 1010 − 10
0011 − 3 1011 − 11
0100 − 4 1100 − 12
0101 − 5 1101 − 13
0110 − 6 1110 − 14
0111 − 7 1111 − 15
oder wir verwenden wieder das erste Bit f¨ur die Codierung des Vorzeichens und codieren damit die Zahlen von−8 bis 7:
0000 − 0 1000 − −8
0001 − 1 1001 − −7
0010 − 2 1010 − −6
0011 − 3 1011 − −5
0100 − 4 1100 − −4
0101 − 5 1101 − −3
0110 − 6 1110 − −2
0111 − 7 1111 − −1
Auch dann gilt wieder− wie man erwarten w¨urde:
z2+ (−z)2 = 02
Im allgemeinen Fall stehen unsn Bits zur Verf¨ugung. Damit k¨onnen wir 2n Zah- len codieren, n¨amlich entweder die positiven Zahlen von 0 bis 2n−1, oder wir verwenden das erste Bit f¨ur die Vorzeichencodierung (0 bedeutet + und 1 bedeu- tet −) und k¨onnen dann die Zahlen von −2n−1 bis 2n−1−1 darstellen. F¨ur das Zweierkomplement gilt in jedem Fall:
z2+ (−z)2 = 02
In der Praxis sind die F¨alle n = 32 bzw. n = 64 relevant, und zwar f¨ur die Darstellung von Zahlen in 32-Bit- bzw. 64-Bit-Rechnerarchitekturen.
Frage: Wie kann man das Zweierkomplement schnell und einfach berechnen?
Antwort: Das geht mit folgendem Algorithmus:
1. In Bin¨arzahl umrechnen 2. Mit Nullen auff¨ullen 3. Komplement bilden 4. 1 addieren
Beispiel 1: Berechnen Sie das Zweierkomplement von 12 mit 5 Bits.
1. 1210= 810+ 410 = 1·23+ 1·22 = 11002 2. 11002 →011002
3. 011002 →100112 4. 100112+ 12 = 101002
Das Zweierkomplement von 12 mit 5 Bits ist 10100.
Beispiel 2: Berechnen Sie das Zweierkomplement von 12 mit 8 Bits.
1. 1210= 810+ 410 = 1·23+ 1·22 = 11002 2. 11002 →000011002
3. 000011002 →111100112 4. 111100112+ 12 = 111101002
Das Zweierkomplement von 12 mit 8 Bits ist 11110100.
Weitere Aufgaben zum ¨Uben: Berechnen Sie das Zweierkomplement von 121 bei 8 Bits
37 bei 6 Bits 127 bei 8 Bits