Umrechnung von Binärzahlen in Dezimalzahlen
Eine Dezimalzahl ist aufgebaut als Folge von Dezimal- Ziffern.
Um z.B. den Wert der Dezimalzahl 206 zu berechnen, geht man so vor:
Addieren und Subtrahieren sind einfachere Rechenoperationen als Multiplizieren und Dividieren. Eine Multiplikation ist elementar betrachtet eine mehrfache Addition desselben Summanden. Obige Rechnung kann man also auch schreiben: Statt eine Zahl aus Zehnerpotenzen aufzubauen kann man sie genausogut aus Zweierpotenzen zusammen setzen. Da das binäre Zahlensystem nur die Ziffern 0 und 1 kennt, entfällt hierbei die Unterscheidung zwischen Multiplikation und Mehrfach-Addition.
Eine Binärzahl ist strukturell aufgebaut wie eine Dezimalzahl, allerdings wird ihr Wert nicht dargestellt aus Potenzen von 10, sondern aus Potenzen der Zahl 2:
Im binären Zahlensystem gibt es nur die Ziffern 0 und 1.
Bits setzen und löschenIn der Digitaltechnik bezeichnet man das in einem Byte am weitesten links stehende Bit als "Bit 7" und das am weitesten rechts stehende Bit als "Bit 0". Wie man durch Vergleich mit Obigem erkennt, ist also die Nummer eines Bits in einem Byte seine Potenz von 2.Daraus leitet sich eine relativ leicht verständliche Anleitung zum Setzen und Löschen von Bits mittels Dezimalzahlen her:
Wesentlich eleganter und flexibler erreicht man dasselbe jedoch mit Hilfe der Boole'schen Algebra.
Eine Zahl wird durch Division in ihre Ziffern zerlegt. Man teilt sie durch die höchste in ihr enthaltene Potenz von 10. Der Quotient ist dann der Wert dieser Zehnerstelle. Der Rest wird durch die nächst niedrigere Potenz von 10 geteilt usw.
Eine Division ist elementar betrachtet eine mehrfache Subtraktion desselben Subtrahenden. Obige Rechnung kann man also auch schreiben:
Statt eine Zahl in Zehnerpotenzen zu zerlegen, kann man sie genausogut nach Zweierpotenzen zerlegen. Da das binäre Zahlensystem nur die Ziffern 0 und 1 kennt, entfällt hierbei die Unterscheidung zwischen Division und Mehrfach-Subtraktion.
Ebenso wie bei der Zerlegung in Zehnerpotenzen geht man vor bei der Zerlegung einer Dezimalzahl in binäre Bits:
Um eine Dezimalzahl in eine Binärzahl umzurechnen, zieht man von ihr systematisch Zweierpotenzen ab, wie oben mit Zehnerpotenzen gezeigt.
Die höchste Zweierpotenz, die man von 206 EIN-mal abziehen kann ist 128, der Rest ist 78. Hiervon 64 EIN-mal abziehen: Rest 14. Die nächst niedrigere Zweierpotenz, 32, kann man nicht, d.h. NULL-mal abziehen, Rest bleibt 14. Auch die nächst niedrigere Zweierpotenz, 16, kann man nur NULL-mal abziehen: Rest bleibt 14. Hiervon 8 EIN-mal abziehen: Rest 6 ... usw.
Kann man die Zweierpotenz vom Rest abziehen, wird die entsprechende Binärstelle gleich 1 gesetzt, die Zahl wird um den dezimalen Wert der Zweierpotenz vermindert und dieselbe Prozedur mit der nächst niedrigeren Zweierpotenz wiederholt ...
Kann von der dabei verbleibende Rest-Dezimalzahl die nächst kleinere Zweierpotenz nicht abgezogen werden, wird die entsprechende Binärstelle gleich 0 gesetzt und dieselbe Prozedur mit der nächst niedrigen Zweierpotenz wiederholt ...
Beispiel: Umwandlung der Zahl 206 in eine Binärzahl:
Die Boole'sche Algebra bietet einen völlig anderen Ansatz zum Prüfen binärer Bits in Dezimalzahlen.
Aus dieser Betrachtung wird auch plausibel, warum bei unseren und anderen digitaltechnischen Produkten die Nummern der Eingänge und Ausgänge von 0 und nicht, wie es im "normalen Leben" ist, von 1 gezählt werden.
Bei Hexadezimal- Zahlen erfolgt der Übertrag nicht nach der 9, sondern nach der (dezimal)15. Um alle Hexadezimal- Ziffern mit einem einzigen Symbol dazustellen, nimmt man für die Darstellung der (Dezimal-)Zahlen 10 bis 15 im Hexadezimal- System die Buchstaben A B C D E F (Groß- und Kleinschreibung erlaubt). Das hexadezimale C ist also gleich der dezimalen 12. Mit einer einzigen Ziffer können im Hexadezimalsystem also 16 Zustände dargestellt werden. Um Hexadezimalzahlen von Dezimalzahlen zu unterscheiden, werden sie (z.B. in Programmcodes oder Manuals) mit einem Zusatz geschrieben. Am bekanntesten sind die Formen: vorangestelltes Dollarzeichen $, vorangestelltes 0x (bei C und Java), seltener auch nachgestelltes H.
Da 16 die vierte Potenz von 2 ist, lassen sich mit einer Hexadezimal-Ziffer genau die Zustände von 4 binären Signalen (Bits) darstellen. Eine Gruppe von 4 Bits heißt in der Informatik "Nibble". Ein Nibble ist also eine andere Bezeichung für eine Hexadezimalziffer.
Hexadezimalzahlen lassen sich besonders vorteilhaft anwenden, um Gruppen binärer Zustände kompakt zu beschreiben. Man stelle sich z.B. eine Gruppe von 4 digitalen Signalleitungen vor, von denen jede den Zustand 0 und 1 annehmen kann, also genau die Zustände einer binären Ziffer. Ordnet man jeder Leitung eine bestimmte Zweierpotenz als Gewicht zu, so lassen sich die Zustände aller Leitungen in einer einzigen Hexadezimal- Ziffer kompakt darstellen.
Während die Binärdarstellung ein quasi grafisches Bild der Leitungszustände ist, erlaubt die Hexadezimaldarstellung eine wesentlich kompaktere Beschreibung.
Diese Tabelle hat man mit einiger Übung ähnlich wie das kleine Einmaleins im Kopf.
Die Kombination von 2 Nibbles im Sinne einer 2-stelligen HexadezimalZAHL nennt man in der Informatik ein "Byte". Mit einem Byte lassen sich alle 256 möglichen Zustände von 8 binären Signalen darstellen.
Um eine Hexadezimalzahl zu kennzeichnen, sind verschiedene Methoden gebräuchlich. Eine davon, die auch auf dieser Website angewandt wird, besteht darin, ein Dollarzeichen vor die betreffende Hex-Zahl zu stellen. $AFFE und $DEADFACE sind also gültige Hexadezimal- Zahlen. Andere bekannte Darstellungsweisen stellen ein kleines "h" hinterher, also AFFEh bzw. DEADFACEh, oder -speziell in der Programmiersprache C - wird "0x" vorangestellt, also 0xAFFE bzw. 0xDEADFACE.
Das Byte $CE zum Beispiel läßt sich mit Hilfe obiger Tabelle schnell in seine Bitkombination 11001110 umrechnen. Der entsprechende Dezimalwert 206 hingegen kann selbst von erfahrenen Programmierern nicht leicht im Kopf in Bits umgerechnet werden. Die reine Binärzahl wiederum kann man sich schwer merken. Die Umrechnung von Bits in Zahlen und umgekehrt ist in der Praxis wichtig bei der Programmierung digitaler Ein- und Ausgänge und bei logischen Verknüpfungen. Daher sollten Sie die Hexadezimal- Darstellung nicht als Schikane oder Informatikspinnerei ansehen, sondern als eine aus der Sache begründete optimale Darstellung binärer Zustände anwenden.
Ein praktischer Vorteil der Hexadezimaldarstellung- weshalb diese auch in der Bedienungsanleitung für die MIDI-Sensorbox verwendet wird - ist die "übertragsfreie" Gliederung von Digitalcodes in Nibbles oder auch in einzelne Bits. Das erste MIDI-Datenbyte aller Nachrichten von und zu der Sensorbox läßt sich im Binär- bzw. Hexadezimalcode gliedern in ein "Befehlstyp-Nibble" und in ein "I/O-Kanal-Nibble". In der Hexadezimaldarstellung sind beide Bestandteile klar voneinander getrennt. Würde man die Codes dezimal darstellen, wäre aus den Zahlenwerten im Kopf diese Beziehung nicht herleitbar, außer für geniale Kopfrechenküstler.
Die Umrechnung per Hand verläuft letzten Endes über die Binärdarstellung der Zahl, allerdings vereinfacht sich die Umrechnung durch eine "nibble-weise" Behandlung.
Die nullt-rechteste Hexadezimal- Ziffer hat das dezimale Gewicht 16 hoch 0 = 1
Die umgekehrte Umrechnung erfolgt durch "Ausdividieren" der Dezimalzahl durch die dezimalen Gewichte der Potenzen von 16:
|