Nothing Special   »   [go: up one dir, main page]

Hexadezimalsystem

Zahlensystem mit der Basis 16
(Weitergeleitet von Hexadezimal)
Hexadezimalziffern,
binär und dezimal:
Hex. Dualsystem Dez.
0 0 0 0 0 00
1 0 0 0 1 01
2 0 0 1 0 02
3 0 0 1 1 03
4 0 1 0 0 04
5 0 1 0 1 05
6 0 1 1 0 06
7 0 1 1 1 07
8 1 0 0 0 08
9 1 0 0 1 09
A 1 0 1 0 10
B 1 0 1 1 11
C 1 1 0 0 12
D 1 1 0 1 13
E 1 1 1 0 14
F 1 1 1 1 15

Im Hexadezimalsystem oder Sedezimalsystem werden Zahlen in einem Stellenwertsystem zur Basis 16 dargestellt. „Hexadezimal“ (von griech. hexa „sechs“ und lat. decem „zehn“) ist ein lateinisch-griechisches Mischwort; korrekt ist die Übersetzung „Sedezimal“ (von lat. sēdecim „sechzehn“).

In der Datenverarbeitung wird das Hexadezimalsystem sehr oft verwendet, da es sich hierbei letztlich um eine komfortablere Verwaltung des Binärsystems handelt. Die Datenwörter bestehen in der Informatik meist aus Oktetten, die statt als achtstellige Binärzahlen auch als nur zweistellige Hexadezimalzahlen dargestellt werden können. Im Gegensatz zum Dezimalsystem eignet sich das Hexadezimalsystem mit seiner Basis als vierte Zweierpotenz (16 = 24) zur einfacheren Notation der Binärzahlen, da stets eine feste Anzahl Zeichen zur Wiedergabe des Datenwortes benötigt wird. Ein Nibble kann exakt mit einer hexadezimalen Ziffer und ein Byte mit zwei hexadezimalen Ziffern dargestellt werden.

In den 1960er und 1970er Jahren wurde in der Informatik häufig auch das Oktalsystem mit seiner Basis als dritte Zweierpotenz (8 = 23) verwendet, da es mit den üblichen Ziffern von 0 bis 7 auskommt. Es findet aber heute seltener Anwendung, beispielsweise zur Darstellung von Zeichen in der Programmiersprache C. Auch gibt es noch weitere Zahlensysteme mit verschiedenen Basiswerten.[1]

Menschen sind es gewohnt, im Dezimalsystem zu rechnen. Das indo-arabische Zahlensystem verwendet zehn Symbole zur Notation der Ziffern (0 bis 9). Das Hexadezimalsystem enthält dagegen sechzehn Ziffern. Seit Mitte der 1950er Jahre werden zur Darstellung der sechs zusätzlichen Ziffern die Buchstaben A bis F oder a bis f als Zahlzeichen verwendet. Dies geht auf die damalige Praxis der IBM-Informatiker zurück.

Etymologie

Bearbeiten

Bei hexadezimal handelt es sich um eine Mischung eines griechischen und eines lateinischen Wortpartikels. Zwar könnte die 16 ohne Rückgriff auf die jeweils andere Sprache ausgedrückt werden (sedezimal von lat. sedecim bzw. hexadekadisch vom Griechischen), diese Bezeichnungen haben jedoch keine Verbreitung gefunden.

Hexadezimal ist vom Wort hexagesimal zu unterscheiden, das synonym zu sexagesimal ist und das Zahlensystem zur Basis 60 bezeichnet.

Darstellung von Hexadezimalzahlen

Bearbeiten

Um hexadezimale von dezimalen Zahlen unterscheiden zu können, existieren mehrere Schreibweisen. Üblicherweise werden hexadezimale Zahlen mit einem Index oder Präfix versehen.

Verbreitete Schreibweisen sind: 7216, 72hex, 72h, 72H, 72H, 0x72, $72, "72 und X'72', wobei das Präfix 0x und das Suffix h insbesondere in der Programmierung und technischen Informatik Verwendung finden. Das Anhängen eines h an die Hex-Zahl ist auch als Intel-Konvention geläufig. Die Schreibweise mit dem Dollar-Präfix ist in Assemblersprachen bestimmter Prozessorfamilien üblich, insbesondere bei Motorola, zum Beispiel beim Motorola 68xx und 68xxx, aber auch beim MOS 65xx; die Schreibweise X'72' ist in der Welt der IBM-Großrechner üblich, wie in REXX.

Der Übersicht dienende Trennpunkte können bei Hexadezimalzahlen alle vier Stellen gesetzt werden, trennen also Gruppen von jeweils sechzehn Bit. Die Bedeutung der 1.000016 = 65.53610 unter den hexadezimalen Zahlen entspricht also jener der 1.00010 unter den dezimalen Zahlen.

Zum Vergleich ein voller Vierundsechzig-Bit-Bus mit und ohne Trennpunkte: FFFF.FFFF.FFFF.FFFF und FFFFFFFFFFFFFFFF

Dezimale Zahlen werden, wo sie nicht der zu erwartende Normalfall sind, indiziert: 11410

Zählen im Hexadezimalsystem

Bearbeiten

Gezählt wird wie folgt:

0 1 2 3 4 5 6 7 8 9 A B C D E F
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F
... ... ... ... ... ... ... ... ... ... ... ... ... ...
F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF
100 101 102 103 104 105 106 107 108 109 10A 10B 10C 10D 10E 10F
... ... ... ... ... ... ... ... ... ... ... ... ... ...
FF0 FF1 FF2 FF3 FF4 FF5 FF6 FF7 FF8 FF9 FFA FFB FFC FFD FFE FFF
1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 100A 100B 100C 100D 100E 100F
... ... ... ... ... ... ... ... ... ... ... ... ... ...
FFF0 FFF1 FFF2 FFF3 FFF4 FFF5 FFF6 FFF7 FFF8 FFF9 FFFA FFFB FFFC FFFD FFFE FFFF
10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 1000A 1000B 1000C 1000D 1000E 1000F
... ... ... ... ... ... ... ... ... ... ... ... ... ...

Aussprache der Hexadezimalzahlen

Bearbeiten

Für die hexadezimalen Ziffern und Zahlen sind keine eigenständigen Namen gebräuchlich. Hexadezimalzahlen werden daher meist Ziffer für Ziffer gelesen.

Beispiele:

  • 10 sprich: „eins-null“ (nicht: „zehn“),
  • 1E sprich: „eins-E“,
  • F112 sprich: „F-eins-eins-zwei“.

Analog lässt sich jedoch auch die Zählweise des Dezimalsystems verwenden, ohne dass der Einsatz des Hexadezimalsystems bei jeder Zahl gehört werden kann und sich dann zum Beispiel aus dem Kontext ergeben muss. Da es allerdings zu Verwechslungen mit Dezimalzahlen kommen kann, wird dies seltener angewendet.

Beispiele:

  • 10 sprich: „zehn“,
  • 1E sprich: „E-zehn“,
  • BD sprich: „D-und-B-zig“,
  • F2A sprich: „F-hundert-A-undzwanzig“,
  • F112 sprich: „F-tausendeinhundertzwölf“.

Hexadezimale Multiplikationstafel (kleines Einmaleins)

Bearbeiten

Beispiel: 2 · 5 = A

Von der Spalte mit dem Wert 2 vertikal hinunter gehen bis Schnittpunkt der Zeile mit Wert 5 → Ergebnis: A

* 1 2 3 4 5 6 7 8 9 A B C D E F 10
1 1 2 3 4 5 6 7 8 9 A B C D E F 10
2 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 20
3 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 30
4 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40
5 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50
6 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 60
7 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70
8 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80
9 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90
A A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0
B B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 B0
C C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 C0
D D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0
E E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 E0
F F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 F0
10 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100

Hexadezimalbrüche

Bearbeiten

Da das Hexadezimalsystem ein Stellenwertsystem ist, haben die Stellen nach dem Komma (das auch hier manchmal als Punkt geschrieben wird) den Stellenwert  , wobei   die dezimale Basis 16 und   die Position der jeweiligen Nachkommastelle ist. Die erste Nachkommastelle ( ) hat damit den Stellenwert  , die zweite Nachkommastelle ( ) hat den Stellenwert  , die dritte Nachkommastelle ( ) hat den Wert   und so weiter.

Da die Zahl 16 nur über den einzigen Primfaktor 2 verfügt, ergibt sich bei allen gekürzten Brüchen, deren Nenner keine Zweierpotenz ist, eine periodische Kommadarstellung im Hexadezimalsystem:

  = 1   = 0,316   = 0,1C716   = 0,13B16
  = 0,816   = 0,2A16   = 0,1916   = 0,124916
  = 0,516   = 0,24916   = 0,1745D16   = 0,116
  = 0,416   = 0,216   = 0,1516   = 0,116

Negative Zahlen

Bearbeiten

Negative Zahlen lassen sich ebenfalls darstellen. Dazu wird in den meisten Fällen die Zweierkomplement-Darstellung verwendet. Durch ihre Auslegung braucht an den Mechanismen für Rechnungen in den Grundrechenarten keine Änderung vorgenommen zu werden.

Anwendung

Bearbeiten

Informatik

Bearbeiten

Das Hexadezimalsystem eignet sich sehr gut, um Folgen von Bits (verwendet in der Digitaltechnik) darzustellen. Vier Stellen einer Bitfolge (ein Nibble) werden wie eine Dualzahl interpretiert und entsprechen so einer Ziffer des Hexadezimalsystems, da 16 die vierte Potenz von 2 ist. Die Hexadezimaldarstellung der Bitfolgen ist leichter zu lesen und schneller zu schreiben:

binär hexadezimal dezimal
1111 F 15
1.1111 1F 31
11.0111.1100.0101 37C5 14.277
1010.1100.1101.1100 ACDC 44.252
1.0000.0000.0000.0000 1.0000 65.536
1010.1111.1111.1110.0000.1000.0001.0101 AFFE.0815 2.952.661.013

Der Punkt dient bei dieser Darstellung lediglich der Zifferngruppierung.

Software stellt daher Maschinensprache oft auf diese Weise dar.

Mathematik

Bearbeiten

Seitdem die Bailey-Borwein-Plouffe-Formel zur Berechnung von π im Jahr 1995 entwickelt wurde, ist das Hexadezimalsystem auch jenseits der Informatik von Bedeutung. Diese Summenformel kann jede beliebige Hexadezimalstelle von π berechnen, ohne die vorhergehenden Stellen dafür zu benötigen.

Konvertierung in andere Zahlensysteme

Bearbeiten
 
Der programmierbare UPN-Taschenrechner HP-16C Computer Scientist von 1982 war speziell für Programmierer konzipiert. Eines der Hauptmarkmale war das Rechnen in und die Umrechnung zwischen verschiedenen Zahlensystemen (siehe Hex-Zahl in der Anzeige), was später von vielen Herstellern in höherwertige Taschenrechner integriert wurde.

Viele Taschenrechner, aber auch die genauso genannten Hilfsprogramme auf Personal Computern, bieten Umrechnungen zum Zahlbasiswechsel an. Insbesondere rechnen die Windows- und macOS-Programme „Rechner“ Binär-, Hexadezimal- und Oktalzahlen in Dezimale und zurück, wenn man unter „Ansicht“ (Windows) bzw. „Darstellung“ (macOS) den Menüpunkt „Programmierer“ auswählt. In vielen Linux-Distributionen ist ein Taschenrechner-Hilfsprogramm vorinstalliert, das eine solche „Programmierer-Option“ beinhaltet, oder man kann in der Kommandozeile die Anweisung printf (als eingebauten bash-Befehl oder gesondertes Hilfsprogramm) dafür benutzen.

Umwandlung von Dezimalzahlen in Hexadezimalzahlen

Bearbeiten

Eine Möglichkeit, eine Zahl des Dezimalsystems in eine Zahl des Hexadezimalsystems umzurechnen, ist die Betrachtung der Divisionsreste, die entstehen, wenn die Zahl durch die Basis 16 geteilt wird, die Methode wird daher auch Divisionsverfahren oder Restwertverfahren genannt.

Im Beispiel der 127810 sähe das so aus:

1278 : 16 = 79 Rest: 14 (= E) (Nr:1278-(79*16)=14)
  79 : 16 =  4 Rest: 15 (= F) (Nr:79-(4*16)=15)
   4 : 16 =  0 Rest:  4       (Nr:4-(0*16)=4)

Die Hexadezimalzahl wird von unten nach oben gelesen und ergibt somit 4FE.

Umwandlung von Hexadezimalzahlen in Dezimalzahlen

Bearbeiten

Um eine Hexadezimalzahl in eine Dezimalzahl umzuwandeln, muss man die einzelnen Ziffern mit der jeweiligen Potenz der Basis multiplizieren. Der Exponent der Basis entspricht der Stelle der Ziffer, wobei der Zahl vor dem Komma eine Null zugeordnet wird. Dazu muss man allerdings noch die Ziffern A, B, C, D, E, F in die entsprechenden Dezimalzahlen 10, 11, 12, 13, 14, 15 umwandeln.

Beispiel für 4FE16:

 

Umwandlung Hexadezimal nach Oktal

Bearbeiten

Um Zahlen zwischen dem vor allem früher in der Informatik verbreiteten Oktalsystem und dem heute gebräuchlichen Hexadezimalsystem umzuwandeln, ist der Zwischenschritt über das Binärsystem zweckmäßig. Dies gelingt recht einfach, da sowohl die Basis 8, als auch die Basis 16 Zweierpotenzen sind.

  • Die Hexadezimalzahl wird nach obiger Tabelle in eine Folge von Binärziffern umgewandelt.
  • Die Vierergruppen werden in Dreiergruppen umgewandelt.
  • Anschließend wird die Binärfolge in eine Oktalfolge übersetzt.

Beispiel für 8D5316:

 

Umwandlung Oktal nach Hexadezimal

Bearbeiten

Genauso einfach erfolgt die Umwandlung von oktal nach hexadezimal, nur dass hier der Weg

Oktalfolge → Binärfolge in Dreiergruppen → Binärfolge in Vierergruppen → Hexadezimalfolge

gegangen wird.

Mathematische Darstellung des Hexadezimalsystems

Bearbeiten

Formuliert im Dezimalsystem:

 

Formuliert im Hexadezimalsystem:

 

Ein- und zweihändiges Zählen mit den Fingerspitzen und Gelenken

Bearbeiten

Wie auch das altbabylonische Sexagesimalsystem lässt sich auch das Hexadezimalsystem mit den Fingern abzählen. Mithilfe der folgenden Technik wird mit beiden Händen zusammen ein Byte dargestellt. Jede Hand repräsentiert dabei ein Nibble. Dessen oberes Crumb (Hälfte des Nibbles) zeigt sich am benutzten Finger, sein unteres Crumb dagegen am bezeigten Gelenk bzw. der Fingerspitze. Ein Bitflip ist durch Punktspiegelung der Daumenposition am Mittelpunkt der Fingerfläche herbeiführbar.

Einhändiges Zählen von Null bis F16

Bearbeiten
 
OK-Zeichen

Benutzt man, wie schon die alten Babylonier, den Daumen als Zeiger, legt ihn an die Spitze des Zeigefingers wie beim OK-Zeichen der Taucher und definiert dieses Zeichen als die Null, lässt sich am oberen Gelenk des Zeigefingers die Eins festlegen, gefolgt von der Zwei am mittleren und schließlich der Drei am unteren Gelenk. Genauso fortgesetzt über die Vier an der Spitze des Mittelfingers, der Acht an der Spitze des Ringfingers und der Zwölf an der des kleinen. Damit lässt sich dann bis 15 = F16 zählen, wenn der Daumen das untere Gelenk des kleinen Fingers erreicht hat, da wo er angewachsen ist.

Die beiden Crumbs des Nibbles werden dabei orthogonal auf der Hand abgebildet, sodass die unteren beiden Bits an der Höhe des Daumens am jeweiligen Finger und die beiden oberen am benutzen Finger abgelesen werden können. Das heißt, sowohl ein Daumen an der Fingerspitze, als auch am Zeigefinger steht für 002 im jeweiligen Crumb. Das obere Gelenk sowie der Mittelfinger stehen für 012, das mittlere Gelenk und der Ringfinger für 102 und das untere Gelenk und der kleine Finger bedeuten 112. Somit müssen sich nur noch vier Kombinationen gemerkt werden, um mit der Hand zwischen Hexadezimal- und Binärsystem zu konvertieren, anstelle von 16.

Ein Bitflip ist durch Punktspiegelung der Position des Daumens am Schnittpunkt der gedachten Achsen zwischen Ring- und Mittelfinger sowie der oberen und mittleren Gelenkreihe einfach zu erzielen. Ein Beispiel ist am Ende der folgenden Tabelle gegeben.

Beispiel zur Umwandlung zwischen Hex und Binär sowie von Bitflips mithilfe der Hand
Ganzes Nibble Oberes Crumb Finger Unteres Crumb Position des Daumens am Finger
016 = (00 00)2 002 Zeigefinger 002 Spitze, OK-Zeichen
116 = (00 01)2 002 Zeigefinger 012 Oberes Gelenk
216 = (00 10)2 002 Zeigefinger 102 Mittleres Gelenk
316 = (00 11)2 002 Zeigefinger 112 Unteres Gelenk
416 = (01 00)2 012 Mittelfinger 002 Spitze
816 = (10 00)2 102 Ringfinger 002 Spitze
C16 = (11 00)2 112 kleiner Finger 002 Spitze
Bitflip von 216 durch Punktspiegelung am Schnittpunkt der o. g. gedachten Achsen
D16 = (11 01)2 112 kleiner Finger 012 Oberes Gelenk

Zweihändiges Zählen von Null bis FF16

Bearbeiten

Zählt man nun auf der linken Hand mit dem oben beschriebenen Verfahren, wie oft man auf der rechten Hand bis F16 gezählt hat, so lässt sich mit zwei Händen ein Byte darstellen. Da an jedem Finger vier Elemente gezählt werden, ergibt sich, dass an den Fingerspitzen Vielfache von Vier auftreten. Dies bedeutet, dass, wenn die Daumen der jeweiligen Hände an der jeweiligen Zeigefingerspitze bei Null zu zählen beginnen, der Wert sich an den Fingerspitzen der rechten Hand um vier, wohingegen bei der linken um jeweils 4016 bzw. 64, erhöht. Rückt man an der linken Hand nur um ein Fingerglied vor oder zurück, so ändert sich der dargestellte Wert um 1016 bzw. 16.

Siehe auch

Bearbeiten
  • Hexadezimale Farbdefinition – die Darstellung einer Farbe mit hexadezimaler Kodierung des Rot-, Grün- und Blauwertes
  • Hex-Editor – ein Editor, um beliebige Dateien, die als Folge von Hexadezimalzahlen dargestellt werden, zu bearbeiten
  • Hexadezimalzeit – ein 1863 vorgeschlagenes Uhrzeitformat, das sich nicht durchgesetzt hat
  • Hexspeak – spezielle Begriffe, die sich durch Ziffern und die Buchstaben A–F darstellen lassen
Bearbeiten
Wiktionary: Hexadezimalsystem – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise

Bearbeiten
  1. Umrechnen mit verschiedenen Basiswerten, abgerufen am 30. Oktober 2018