Die in der Informatik gängigen Zahlensysteme zu verstehen ist unabdingbar für jegliche professionelle Programmierer und Netzwerktechniker. Die in der Software- und Netzwerktechnik vorkommenden Zahlensysteme sind Stellenwertsysteme.
Stellenwertsysteme basieren auf der bestimmten Wertigkeit einer Position (Stelle) jeder Ziffer. Ein typisches Zahlensystem, welches kein Stellenwertsystem, sondern ein Additionssystem ist, ist das Notieren von Ereignissen/Objekten mit Strichen, beispielsweise das (für Bierdeckelnotizen bekannte) System, wonach vier Striche vertikal, der fünfte Strich diagonal dargestellt werden. Additionssysteme können auch in anderer Form dargestellt werden, sind gewöhnlicherweise aber nur für kleine Summen übersichtlich.
Stellenwertsysteme entsprechen einer anderen Logik, nämlich der der Stellenwerte.
Der Wert einer Zahl (Zahlenwert) wird nicht an Hand von Strichen oder anderen Symbolen abgezählt, sondern errechnet. Der Zahlenwert ist die Summe aus allen Ziffernwerten (die einer Zahl zugehörig sind). Die Ziffernwerte sind die jeweiligen Produkte aus Stellenwert und Nennwert.
Zahlenwert = ∑ Ziffernwerti = ∑ (Nennwerti x Stellenwerti)
Stellenwertsysteme im Alltag und der Informatik
Zahlen nach Stellenwertsystem dargestellt, werden nicht mit Strichen, sondern mit einer Folge von Ziffern angegeben.
Eine Ziffer ist ein Zeichen zur Darstellung von Zahlen aus einem Zeichenvorrat, der aus einer Ziffernzahl (Basis) x verschiedener Elemente besteht.
Das uns bekannteste und meist verwendete Zahlensystem ist das Dezimalzahlensystem (Zehnersystem, „dezi“ = „zehn“, zurückzuführen auf die zehn Finger des Menschen).
Dezimalzahlensystem: Basis = 10 Zeichenvorrat: 0,1,2,3,4,5,6,7,8,9
Nennwerte | 1 | 5 | 2 | 6 | , | 4 | 5 |
Stellenwerte | 103 | 102 | 101 | 100 | , | 10-1 | 10-2 |
Produkte nach Stellen | 1*103 | 5*102 | 2*101 | 6*100 | , | 4*10-1 | 5*10-2 |
Wert (in Dezimal) | 1526,45 |
Der Endwert einer Zahl ist die Summe aus allen Produkten nach Stellen. Ein aus den Nennwerten und den Stellenwerten.
Die zwei wichtigsten Zahlensysteme in der Informatik sind das Dualzahlensystem (Binärzahlsystem, Zweiersystem) und das Hexadezimalzahlensystem (Sechser- plus Zehnersystem).
Dualzahlensystem: Basis = 2; Zeichenvorrat: 0, 1
Hexadezimalzahlensystem: Basis = 16; Zeichenvorrat: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Diese Zahlensysteme werden, auf Grund der alltäglichen Nutzung des Dezimalzahlensystems, am besten verstanden, wenn diese in das Dezimalzahlensystem umgewandelt werden.
Beispiel einer binären Zahl (Dualzahl):
Nennwerte | 1 | 1 | 0 | 1 | , | 0 | 1 |
Stellenwerte | 23 | 22 | 21 | 20 | , | 2-1 | 2-2 |
Produkte nach Stellen | 1*23 | 1*22 | 0*21 | 1*20 | , | 0*2-1 | 1*2-2 |
Wert (in Dezimal) | 8+ 2 + 0 + 1 + 0 +1/4 = 13,25 |
Beispiel einer Hexadezimalzahl:
Nennwerte | A | F | 2 | C | , | 0 | D |
Stellenwerte | 163 | 162 | 161 | 160 | , | 16-1 | 16-2 |
Produkte nach Stellen | 10*163 | 15*162 | 2*161 | 12*160 | , | 0*16-1 | 13*16-2 |
Wert (in Dezimal) | 40960+ 3840 + 32 + 12 + 0 + 0,05 = 44844,05 |
Ein weiteres gängiges Zahlensystem ist das Oktalzahlensystem (Achtersystem), auf welches an dieser Stelle jedoch nicht weiter eingegangen wird.
Oktalzahlensystem: X = 8; Zeichenvorrat: 0,1,2,3,4,5,6,7
Zurückrechnen vom Dezimalsystem ins Dualsystem
Dezimalzahl 79 in Dual umrechnen:
79 / 2 = 39 Rest 1 (da 0,5 * 2 = 1)
39 / 2 = 19 Rest 1
19 / 2 = 9 Rest 1
9 / 2 = 4 Rest 1
4 / 2 = 2 Rest 0
2 / 2 = 1 Rest 0
1 / 2 = 0 Rest 1
=> 1001111
Zurückrechnen vom Dezimalsystem ins Hexadezimalsystem
Dezimalzahl 79 in Hexadezimal umrechnen:
79 / 16 = 4 Rest F (0,9375 * 16 = 15 = F)
4 / 16 = 0 Rest 4
=> 4F
Umrechnen von Dualzahlen in Hexadezimalzahlen
Diese Rechnung ist sehr einfach. Es gilt: Vier Stellen der Dualzahl entspricht einer Stelle einer hexadezimalen Zahl. Als Zwischenschritt werden die vier Stellen (immer ausgehend vom Komma) abgezählt und dezimal betrachtet.
Umrechnen der Dualzahl 1001111 in Hexadezimal:
dual | 0100 | 1111 |
dezi. | 0*24+1*2³+0*2²+0*21 = 4 | >1*24+1*2³+1*2²+1*21 = 15 |
hexadezimal | 4 | F |
(Achtung! Auf diese Weise kann die Binärzahl nicht in das Dezimlasystem umgerechnet werden! 1001111 sind nicht 4 + 15 sondern 79!)
Umrechnen von Hexadezimalzaheln in Dualzahlen
Umgekehrt funktioniert dies genauso gut. Ein anderes Beispiel mit der hexadezimalen Zahl B0D3:
hexadezimal | B | 0 | D | 3 |
dezi. | 11 | 0 | 13 | 3 |
dual | 1011 | 0000 | 1101 | 0011 |
(Achtung! Auf diese Weise kann die Hexadezimalzahl B0D3 nicht in das Dezimalsystem umgerechnet werden! B0D3 ist nicht 11 + 0 + 13 + 3 sondern 45267)
Rechnen mit dem Dualzahlensystemen
Addition von Dualzahlen
0 + 0 = 0
1 + 0 = 1 bzw. 0 + 1 = 1
1 + 1 = 0 Rest 1
1 + 1 + 1 = 1 Rest 1
1 + 1 + 1 + 1 = 0 Rest 1 und 1 (zwei Einsen)
Die Restwerte werden als Überträge in die Rechnung (immer für die nächst höhere Stelle) mit eingebracht. Überträge werden hier blau dargestellt.
Beispiel: 110111 + 10110 = 1001101
1 | 1 | 0 | 1 | 1 | 1 | ||
+ | 1 | 0 | 1 | 1 | 0 | ||
1 | 1 | 1 | 1 | ||||
______________ | |||||||
1 | 0 | 0 | 1 | 1 | 0 | 1 |
Beispiel: 101111 + 11111 + 10010 = 1100000
1 | 0 | 1 | 1 | 1 | 1 | ||
+ | 1 | 1 | 1 | 1 | 1 | ||
+ | 1 | 0 |
0 | 1 | 0 | ||
1 | 1 | 1 | 1 | ||||
1 | 1 | 1 | 1 | 1 | 1 | ||
______________ | |||||||
1 | 1 | 0 | 0 | 0 | 0 | 0 |
Subtraktion von Dualzahlen
- Fall – Minuend ist größer als Subtrahend:
Beispiel: 11011 – 110 = 101011.) 110 auf gleiche Stellenzahl bringen -> 00110
2.) den Subtrahend umkehren -> 11001
3.) den Subtrahend zum Minuend addierenMinuend 1 1 0 1 1 Umgekehrter Subtrahend 1 1 0 0 1 Überlauf 1 1 1 1 Summe 1 0 1 0 0 4.) Aus dem Überlauf wird dann nochmals die verbleibende 1 hinzu addiert!
1 0 1 0 0 Plus Überlauf 0 0 0 0 1 Summe 1 0 1 0 1 Die letzte Summe ist das Ergebnis 10101.
Weiteres Beispiel: 101110 – 100
Minuend 1 0 1 1 1 0 Umgekehrter Subtrahend 1 1 1 0 1 1 Überlauf 1 1
1 1
1
Summe 1 0 1 0 0 1 Aus dem Überlauf wird dann nochmals die verbleibende 1 hinzu addiert!
1 0 1 0 0 1 Plus Überlauf 0 0 0 0 0 1 1 Summe 1 0 1 0 1 0 Das Ergebnis lautet: 101010
- Minuend ist kleiner oder gleich Subtrahend
Beispiel: 11010 – 111011 = ???
1.) Subtrahend umkehren: 111011 -> 000100
2.) Zum umgekehrten Subtrahend 1 addieren: 000100 + 000001 = 000101
3.) Minuend und umgekehrten Subtrahend addieren:Minuend 0 1 1 0 1 0 Neuer Subtrahend 0 0 0 1 0 1 Überlauf
Summe 0 1 1 1 1 1
4.) Die Summe wird wiederum umgekehrt: 011111 -> 100000
5.) Zur umgekehrten Summe wird eine 1 hinzu addiert: 100000 + 00001 = 100001
Das Ergebnis lautet 100001 (negativ, da eine größere Zahl von einer kleineren Zahl abgezogen wurde).
Multiplizieren von Dualzahlen:
Ein einfaches Beispiel: 1010 x 110 = 111100
1 | 0 | 1 | 0 | ||||
x | 0 | 1 | 1 | 0 | |||
__________________ | |||||||
0 | 0 | 0 | 0 | ||||
1 | 0 | 1 | 0 | ||||
1 | 0 | 1 | 0 | ||||
0 | 0 | 0 | 0 | ||||
__________________ | |||||||
1 | 1 | 1 | 1 | 0 | 0 |
Die Multiplikation kann sich auch etwas komplexer gestalten, so dass Überträge (blaue Zahlen) zu berücksichtigen sind. Beispiel: 1011011 x 10011 = 11011000001
1 | 0 | 1 | 1 | 0 | 1 | 1 | |||||||
x | 1 | 0 | 0 | 1 | 1 | ||||||||
___________________________ | |||||||||||||
1 | 0 | 1 | 1 | 0 | 1 | 1 | |||||||
1 | 0 | 1 | 1 | 0 | 1 | 1 | |||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||
1 | 0 | 1 | 1 | 0 | 1 | 1 | |||||||
1 | 1 | ||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | ||||||
___________________________ | |||||||||||||
1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
Division von Dualzahlen
Die Division beginnt immer beim Divident an der Stelle mit dem höchsten Stellenwert (ganz links). Es wird schrittweise versucht, den Dividenten durch den Divisor zu teilen.
- Kann der Divisor vom Dividenten vollständig (mit Dualsubtraktion) subtrahiert werden?
- Wenn ja, dann eine 1 im Ergebnis verzeichnen und mit Rest weiter rechnen.
- Wenn nein, dann eine 0 im Ergebnis verzeichnen und eine Stelle nach rechts rücken, wieder von vorne mit der Frage beginnen.
Beispiel: Divident = 10110; Divisor = 101
1 | 0 | 1 | 1 | 0 | : | 1 | 0 | 1 | = | 1 | 0 | 0 | ||
1 | 0 | 1 | Rest | 10 | ||||||||||
1 | 0 | 1 | ||||||||||||
______ | ||||||||||||||
0 | 1 | 0 | ||||||||||||
Weiteres Beispiel: Divident = 1011101; Divisor = 111
1 | 0 | 1 | 1 | 1 | 0 | 1 | : | 1 | 1 | 1 | = | 0 | 1 | 1 | 0 | 1 | |||
1 | 0 | 1 | 1 | Rest | 10 | ||||||||||||||
1 | 1 | 1 | |||||||||||||||||
________ | |||||||||||||||||||
1 | 0 | 0 | 1 | ||||||||||||||||
1 | 1 | 1 | |||||||||||||||||
_____ | |||||||||||||||||||
1 | 0 | 0 | |||||||||||||||||
1 | 1 | 1 | |||||||||||||||||
______ | |||||||||||||||||||
1 | 0 | 0 | 1 | ||||||||||||||||
1 | 1 | 1 | |||||||||||||||||
________ | |||||||||||||||||||
1 | 0 | ||||||||||||||||||
Rechnen mit dem Hexadezimalzahlensystemen
Addieren von Hexadezimalzahlen:
Beispiel: AB96F + 2A3 = ABC12
A | B | 9 | 6 | F | |||
+ | 2 | A | 3 | ||||
1 | 1 | ||||||
_______________ | |||||||
A | B | C | 1 | 2 |
Beispiel: 40A113 + 13248 + ECEDF + F2CE9F = 14370D9
4 | 0 | A | 1 | 1 | 3 | ||
+ | 1 | 3 | 2 | 4 | 8 | ||
+ | E | C |
E | D | F | ||
+ | F | 2 | C | E | 9 | F | |
1 | 1 | 2 |
2 |
1 | 2 |
||
_______________ | |||||||
1 | 4 | 3 | 7 | 0 | D | 9 |
Multiplizieren von Hexadezimalzahlen:
Bei der Multiplikation müssen Überträge bereits bei der Multiplikation berücksichtigt werden.
Ein einfaches Beispiel: ABB x 208 = 15CBD8
A | B | B | |||||
x | 2 | 0 | 8 | ||||
__________________ | |||||||
5 | 5 | 5 |
|||||
5 | 5 | D | 8 | ||||
0 | 0 | 0 | 0 | ||||
1 | 1 | 1 | |||||
1 | 5 | 7 | 6 | ||||
__________________ | |||||||
1 | 5 | C | B | D | 8 |
Beispiel: FD12A x CF4 = CCE15408
F | D | 1 | 2 | A | |||||||||
x | C | F | 4 | ||||||||||
___________________________ | |||||||||||||
3 | 3 | 2 | |||||||||||
3 | F | 4 | 4 | A | 8 | ||||||||
E | C | 1 | 2 | 9 | |||||||||
E | D | 4 | 1 | 7 | 6 | ||||||||
B | 9 | 1 | 7 | ||||||||||
B |
D |
C | D | F | 8 | ||||||||
1 | 1 | 2 | 1 | 1 | 1 | ||||||||
___________________________ | |||||||||||||
C | C | E | 1 | 5 | 4 | 0 | 8 |