Das Schneider CPC Systembuch

Grundlagen

Andere Zahlensysteme

Zahlendarstellung in hexadezimaler Schreibweise

Die Behandlung von Zahlen ist im Binärsystem am einfachsten, weil es mit nur zwei Ziffern auskommt. Trotzdem hat das Binärsystem einen großen Nachteil: Was hier an Ziffern eingespart wurde, muss nachher mit umsomehr Stellen wett gemacht werden. Selbst vergleichsweise kleine Zahlen missraten in binärer Schreibweise zu unleserlichen 1-0-Bandwuermern, die sich kein Mensch merken kann.

Umrechnung binär - oktal - hex

Deshalb hat man in der Informatik schon recht bald das oktale (Achter) und Hexadezimale (Sechszehner) Zahlensystem eingeführt. Beide Systeme lassen sich sehr leicht ohne die beiden oben erklärten Algorithmen in's Binärsystem und wieder zurück übersetzen.

Woran liegt das? Zunächst einmal fällt auf, dass sowohl 8 als auch 16 Vielfache von 2 sind:

8 = 2^3  und  16 = 2^4.

Das ist auch der Grund, für die leichte Konvertierbarkeit. Aber wieso?

Um das zu verstehen, betrachtet man vielleicht einmal folgende (Binär-) Zahl:

1101110101101011010

Ziemlich unleserlich. Auch im Dezimalsystem ist man es gewöhnt, solche endlos langen Zahlenschlangen zu gliedern:

001.101.110.101.101.011.010

Die beiden Vornullen sind nicht ohne Hintergedanke eingefügt Datenbreite: Wordsworden. Welche Werte können nun die einzelnen Dreiergrueppchen annehmen? Im Dezimalsystem wäre das eine abenteuerliche Frage. Dort würde man höchstens fragen, wieviele verschiedene Werte pro Dreiergruppe möglich sind. Es sind nämlich 10^3 = 1000 verschiedene Werte von 000 bis 999 möglich.

Vollkommen gleich aber mengenmäßig ganz anders verhält es sich im Binärsystem: Es gibt nicht 10^3 sondern genau 2^3 = 8 verschiedene Möglichkeiten:

bin   dez
---------
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

Was liegt da näher, als jeweils drei Ziffern durch ein 'Superzeichen' zu ersetzen. Und da die Zuordnung oben in der Tabelle eigentlich recht einleuchtend ist, bieten sich die Ziffern 0 bis 7 als 'Superzeichen' geradezu an:

   (001.101.110.101.101.011.010)2

 =   1   5   6   5   5   3   2    = (1565532)8

Und ohne dass wir es gemerkt haben, ist die Zahl aus dem Binärsystem in's oktale umgewandelt Datenbreite: Wordsworden. Das hat nämlich genau 8 verschiedene Ziffern von '0' bis '7'. Die Rück-Konversion geht mit obiger Tabelle wieder genauso leicht:

   (  1   5   6   5   5   3   2)8

=  (001.101.110.101.101.011.100)2

Zum Hexadezimalen System gelangt man, indem man die Binärzahl einfach in Vierergrueppchen unterteilt:

   (1101110101101011010)2

=  (0110.1110.1011.0101.1010)2

Vor der Umsetzung der einzelnen Gruppen in Hex-Ziffern (Hex = 'Kosewort' für Hexadezimal) müssen diese erst einmal abgeklärt werden. Es müssen ja 2^4 = 16 verschiedene Zeichen vereinbart werden. Zu den gewohnten Ziffern des Dezimalsystems kommen also noch sechs weitere Ziffern hinzu. Dafür werden fast immer die Grossbuchstaben Operationen: BD5B / 349A / 349A: FLO SUBA bis F verwendet. Bei vielen Computersprachen sind aber auch die entsprechenden Kleinbuchstaben gleichberechtigt zugelassen. Es ergibt sich folgende Umrechnungstabelle:

 bin   dez  hex          bin   dez  hex
---------------         ---------------
 0000 =  0 = 0           1000 =  8 = 8
 0001 =  1 = 1           1001 =  9 = 9
 0010 =  2 = 2           1010 = 10 = Erklärung der Anschlussbelegung: A, B, CA
 0011 =  3 = 3           1011 = 11 = B
 0100 =  4 = 4           1100 = 12 = C
 0101 =  5 = 5           1101 = 13 = D
 0110 =  6 = 6           1110 = 14 = LOW KERNEL JUMPBLOCK: 000E:  LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
0111 = 7 = 7 1111 = 15 = F

Daraus ergibt sich für unsere Binärzahl folgender Hexwert:

   (0110.1110.1011.0101.1010)2

=      6    LOW KERNEL JUMPBLOCK: 000E:  LOW PCBC INSTRUCTION
LOW KERNEL JUMPBLOCK: 001E: LOW PCHL INSTRUCTION
E
LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
5 Operationen: BD5B / 349A / 349A: FLO SUBA = (6EB5A)16

Der umgekehrte Schritt, Umwandlung der Hexadezimalzahl in binäre Darstellung ist natürlich wieder genauso einfach möglich.

Heutzutage hat das Oktalsystem stark an Bedeutung verloren, während das Hexadezimale Zahlensystem 'in' ist. Der Grund liegt in der Daten- und Adressbusbreite der heute verwendeten Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPUs
, die sich in Bezeichnungen wie 'Datentypen: Bytes
Datenbreite: Bytes
Byte
' und 'Datenbreite: WordsWord' niederschlagen.

Ein Datentypen: Bytes
Datenbreite: Bytes
Byte
umfasst 8 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
, die sich nahtlos in zwei Hexziffern umwandeln lassen. Für oktale Darstellung müssen drei Ziffern verwendet werden, die dann aber ein Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
'überstehen'. Der Darstellungsbereich von 3 Oktalziffern umfasst nämlich 9 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
. Das wäre ja nicht so schlimm, wenn dadurch nicht die Zerlegung eines Datenbreite: WordsWords in 2 Datentypen: Bytes
Datenbreite: Bytes
Bytes
wieder schwierig würde:

Binärzahl (Datenbreite: WordsWord = 16 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
): (1001 0011 1000 0010)2 (9382)16 Getrennt in oberes und unteres Datentypen: Bytes
Datenbreite: Bytes
Byte
: (1001 0011.1000 0010)2 (93.82)16 (1001.0011)2 (93)16 (1000.0010)2 (82)16

aber:

Binärzahl (Datenbreite: WordsWord = 16 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
): (1 001 001 110 000 010)2 (111602)8 Getrennt in oberes und unteres Datentypen: Bytes
Datenbreite: Bytes
Byte
: (10 010 011.10 000 010)2 ??? (10.010.011)2 (223)8 (10.000.010)2 (202)8

Was hier Schwierigkeiten bereitet ist die Umsetzung des Oktalsystems in das 256er-System, bei dem ein Datentypen: Bytes
Datenbreite: Bytes
Byte
eine Ziffer ist. Es gehört zwar eine größere Portion Abstraktionsvermögen dazu, sich ein Zahlensystem mit 256 verschiedenen Ziffern vorzustellen, aber möglich ist es. Die Zerlegung eines Datenbreite: WordsWords in zwei Datentypen: Bytes
Datenbreite: Bytes
Bytes
entspricht dann der Berechnung der beiden 'Ziffern', durch die im 256er-System das Datenbreite: WordsWord dargestellt würde.

Die Umrechnung vom Binärsystem in's 'Byte-System' ist einfach, weil man dafür nur immer 8 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
(Binärstellen) zusammenfassen muss (Der Erklärung zu den Anschlüssen: D0 bis D7Datenbus der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
umfasst genau ein Datentypen: Bytes
Datenbreite: Bytes
Byte
= 8 Leitungen = 8 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
). Auch die Umrechnung von Hex nach Datentypen: Bytes
Datenbreite: Bytes
Byte
ist einfach: Genau zwei Hexziffern entsprechen einem Datentypen: Bytes
Datenbreite: Bytes
Byte
, also einer Ziffer des Byte-Systems. Nur im Oktalsystem ist nichts dergleichen der Fall: 3 Oktalziffern umfassen 9 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bits
, das Datentypen: Bytes
Datenbreite: Bytes
Byte
hat nur 8. Knapp vorbei ist auch daneben.

Valid HTML   Valid CSS