Inhaltsverzeichnis
1.1 Zahlsysteme
Dualsystem
Bereits in Klasse 7 haben Sie die Dualzahlen (oder auch Binärzahlen) kennengelernt. Digitale Systeme arbeiten auf Basis des Dualsystems, weil sich die beiden Ziffern 0 und 1 besonders einfach umsetzen lassen (0 ≙ 0V, 1 ≙ 5V).
Genau wie das Dezimalsystem ist das Dualsystem ein Stellenwertsystem. Im Unterschied zum Dezimalsystem, arbeitet es nicht mit Zehnerpotenzen, sondern mit Zweierpotenzen.
Beispiel 1
Darstellung der Dezimalzahl in der Stellentafel:
| $10^4=10000$ | $10^3=1000$ | $10^2=100$ | $10^1=10$ | $10^0=1$ |
|---|---|---|---|---|
| $0$ | $3$ | $0$ | $4$ | $5$ |
Beispiel 2
Darstellung der Binärzahl in der Stellentafel:
| $2^7=128$ | $2^6=64$ | $2^5=32$ | $2^4=16$ | $2^3=8$ | $2^2=4$ | $2^1=2$ | $2^0=1$ |
|---|---|---|---|---|---|---|---|
| $1$ | $0$ | $0$ | $1$ | $0$ | $0$ | $1$ | $1$ |
Umwandeln von Dualzahlen in Dezimalzahlen und umgekehrt
Umwandeln von Dualzahlen in Dezimalzahlen
Um eine Binärzahl ins Dezimalsystem umzurechnen, trägt man sie einfach in eine Stellentafel ein und addiert die Zweierpotenzen, bei denen in der Stellentafel eine 1 steht.
Beispiel 3
(Zahl aus Beispiel 2)
$(10010011)_2 = 128 + 16 + 2 + 1 = 147$
Umwandeln von Dezimalzahlen in Dualzahlen
Beispiel 4
Um eine Dezimalzahl ins Binärsystem umzurechnen, zerlegt man sie zunächst in eine Summe aus Zweierpotenzen:
$156 = 128 + 16 + 8 + 4$
Nun trägt man bei allen auftretenden Zweierpotenzen in die Stellentafel eine 1 ein, ansonsten trägt man Nullen ein:
| $2^7=128$ | $2^6=64$ | $2^5=32$ | $2^4=16$ | $2^3=8$ | $2^2=4$ | $2^1=2$ | $2^0=1$ |
|---|---|---|---|---|---|---|---|
| $1$ | $0$ | $0$ | $1$ | $1$ | $1$ | $0$ | $0$ |
Nun kann man die Zahl einfach aus der Stellentafel ablesen, wobei man führende Nullen weglassen kann:
$\rightarrow (10011100)_2$
Beispiel 5
Eine weitere Möglichkeit um Dezimalzahlen in Dualzahlen umzurechnen ist die fortgesetzte Division mit Rest, bis sich 0 ergibt:
$$ \begin{array}{rcll} 156 : 2&=&78 & \text{Rest } 0 \\ 78 : 2&=&39 & \text{Rest } 0 \\ 39 : 2&=&19 & \text{Rest } 1 \\ 19 : 2&=&9 & \text{Rest } 1 \\ 9 : 2&=&4 & \text{Rest } 1 \\ 4 : 2&=&2 & \text{Rest } 0 \\ 2 : 2&=&1 & \text{Rest } 0 \\ 1 : 2&=&0 & \text{Rest } 1 \\ \end{array} $$
Rechnen mit Dualzahlen
Addition von Dualzahlen
Das schriftliche Addieren von Dualzahlen unterscheidet sich nicht wesentlich von der Durchführung des Verfahrens bei Dezimalzahlen. Der Unterschied besteht lediglich darin, dass sich bereits bei 2 ein Übertrag ergibt:
Beispiel 6
$6 + 5 = (110)_2 + (101)_2 = (1011)_2 =11$
$$ \begin{array}{lr} &110\\ +&101\\ \hline &\underline {\underline {1011}} \\ \end{array} $$
Beispiel 7
$27 + 34 = (11011)_2 + (100010)_2 = (111101)_2 =61$
$$ \begin{array}{lr} &11011\\ +&100010\\ \hline &\underline {\underline {111101}} \end{array} $$
Komplement
Eine spezielle Operation mit Dualzahlen, die von den Dezimalzahlen her nicht gebräuchlich sind. Dabei handelt es sich um die Bildung des Komplements (d.h. der Ergänzung). Wir unterscheiden dabei zwischen Einer- und Zweierkomplement. Das Zweierkomplement ist dabei die Dualzahl, die zu einer vorgegebenen Dualzahl addiert werden muss, um auf eine bestimmte Zweierpotenz zu kommen. Das Einerkomplement entspricht dem Zweierkomplement - 1.
Die zu erreichende Zweierpotenz hängt von der Wortbreite (maximale Länge eines Befehls, der durch den Prozessor verarbeitet werden kann). Moderne CPUs können Befehle mit einer Breite von 64 Bit verarbeiten, man verwendet aber als Wortbreite meist 32 Bit um abwärts kompatibel zu sein. Wir verwenden für unsere Übungen eine Wortbreite von 8 Bit.
Bei einer Wortbreite von 8 Bit ist das Zweierkomplement die Zahl, die zur Ausgangszahl addiert werden muss, dass die Zweierpotenz erreicht wird. Das ist die erste Zweierpotenz, die sich mit 8 Bit Wortbreite nicht mehr darstellen lässt.
Bildung der Komplemente
Beispiel 8
Gegeben ist die Dualzahl $(1001000)_2 = 80$. Um das Zweierkomplement bei einer Wortbreite von 8 Bit zu bilden, führen wird die folgenden drei Schritte durch:
- Ergänzen der Zahl durch führende Nullen auf 8 Stellen: $$01001000$$
- Das Einerkomplement bildet man, indem man alle Stellen der Zahl umkehrt, d.h. aus einer 0 wird eine 1 und aus einer 1 wird eine 0:$$\begin{array}{lr}\text{Zahl: } & 01001000 \\ \text{Einerkomplement: }&10110111 \\ \end{array}$$
- Zum Einerkomplement addiert man nun noch die Zahl 1 um das Zweierkomplement zu erhalten: $$ \begin{array}{rlr} \text{Einerkomplement: }&&10110111 \\ &+&1 \\ \text{Zweierkomplement: } &&\underline {\underline {10111000}} \end{array}$$
Subtraktion von Dualzahlen
Beispiel 9
Die schriftliche Subtraktion von Dualzahlen funktioniert analog zur Subtraktion von Dezimalzahlen:
$$ \begin{array}{lr} &110100\\ -&10011\\ \hline &\underline {\underline {100001}} \end{array} $$
Beispiel 10
Man kann Dualzahlen aber auch subtrahieren, indem man indem man das Zweierkomplement des Subtrahend addiert. Die entstehende Zahl ist dann größer als die Wortbreite und die führende Eins fällt dann einfach weg.
Einerkomplement von $00010011 \rightarrow 11101100$
Zweierkomplement: $11101100 + 1 = 11101101$
$$ \begin{array}{lr} &110100\\ +&11101101\\ \hline &\underline {\underline {(1)00100001}} \end{array} $$
Auch wenn die Wortbreite größer ist, würden solange führende Nullen entstehen, bis die entsprechende Zweierpotenz ($2^{32}$ bzw. $2^{64}$) erreicht ist.
Hexadezimalsystem
Dualzahlen sind wesentlich länger als ihre dezimalen Entsprechungen. Deshalb benutzt man in der technischen Informatik noch das Hexadezimalsystem, ein Zahlsystem auf der Basis 16. Der Vorteil des Hexadezimalsystems ist, dass sich hexadezimale Zahlen besonders einfach in Dualzahlen umrechnen lassen und umgekehrt, weil eine hexadezimale Ziffer einer vierstelligen Dualzahl entspricht.
Das Alphabet des Hexadezimalsystems besteht aus den Ziffern
$$\mathcal{A}=\lbrace\text{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}\rbrace$$
, wobei A der Dezimalzahl 10, B der Dezimalzahl 11, C der Dezimalzahl 12, D der Dezimalzahl 13, E der Dezimalzahl 14 und F der Dezimalzahl 15 entspricht.
Beispiel 11
Damit ergibt sich die folgende Stellentafel:
| $16^2=256$ | $16^1=16$ | $16^0=1$ |
|---|---|---|
| 2 | A | 4 |
Die dargestellte Zahl $(2A4)_{16}$ lässt sich nun wie folgt in eine Dezimalzahl umwandeln:
$$(2A4)_{16} = 2 \cdot 16^2 + A \cdot 16^1 + 4 \cdot 16^0 = 2 \cdot 256 + 10 \cdot 16 + 4 \cdot 1 = 676$$
Beispiel 12
Um eine Dezimalzahl in eine Hexadezimalzahl umzuwandeln kann man analog zu den Dualzahlen vorgehen und eine fortgesetzte Division durch 16 durchführen. Dies soll am Beispiel der Zahl 741 durchgeführt werden:
$$ \begin{array}{rcll} 741 : 16&=&46 & \text{Rest } 5 \\ 46 : 16&=&2 & \text{Rest } 14 \\ 2 : 16&=&0 & \text{Rest } 2 \\ \end{array} $$ Die entstehenden Reste von unten nach oben gelesen ergeben die gesuchte hexadezimale Zahl, wobei 14 der Ziffer E entspricht:
$$(2E5)_{16}$$ Während das Umwandeln dezimaler Zahlen in hexadezimale Zahlen recht schwierig sein kann, kann man duale Zahlen recht einfach in hexadezimale Zahlen umwandeln. Dazu unterteilt man die Zahl von rechts beginnend in Viererblöcke, wobei man den linken Viererblock eventuell mit Nullen auffüllt, und wandelt jeden der Viererblöcke einzeln in eine Zahl von 0 bis 15 (0 bis F) um.
Beispiel 13
$$(1000111101)_2 = \underbrace{0010}_{2} \underbrace{0011}_{3} \underbrace{1101}_{13 = \text{D}} = (23\text{D})_{16}$$
Umgekehrt funktioniert das genau so:
Beispiel 14
$$(\text{F}39)_{16}= \underbrace{\text{F}}_{1111} \underbrace{3}_{0011} \underbrace{9}_{1001} = (111100111001)_2$$
Deshalb lohnt es sich, beim Umwandeln von Hexadezimalzahlen in Dezimalzahlen und umgekehrt den Umweg über die Dualzahlen zu gehen.
Damit sind die wichtigsten Zahlsysteme der technischen Informatik vorgestellt. In den nächsten Abschnitten wird nun gezeigt, wie man sie zur Codierung von Zahlen und Zeichen im Computer verwendet.
