Hexadezimal-Rechner
Ergebnis
Hexadezimal
- Dezimal
- 10.842
- Binär
- 10101001011010
- Rest
- 0
Ein Hexadezimalrechner addiert, subtrahiert, multipliziert und dividiert Hexadezimalzahlen und gibt das Ergebnis dreifach aus: hexadezimal, dezimal und binär. Das Hexadezimalsystem hat die Basis sechzehn, also braucht es sechzehn Ziffernzeichen, wo das Dezimalsystem zehn hat — die sechs fehlenden sind dem Alphabet entlehnt, und A bis F stehen für zehn bis fünfzehn. Das ist die ganze Schreibweise: Das A ist kein Code und keine Abkürzung, sondern die Ziffer, die auf die 9 folgt. Die vier Rechenarten laufen spaltenweise genau wie in der Dezimalrechnung, nur mit der Basis sechzehn statt zehn, sodass eine Spalte erst übertragen wird, wenn sie über das F hinausläuft. 2A3F + 1B ergibt deshalb 2A5A: In der rechten Spalte steht F + B, also 15 + 11 = 26 = 16 + 10, und die Zehn wird als A geschrieben, während die Eins in die nächste Spalte wandert. Die drei Ausgabezeilen bedienen drei verschiedene Leser: Die Hexadezimalzeile ist die Form, in der der Wert üblicherweise notiert wird, die Dezimalzeile ist die Größe, die man im Kopf nachprüfen kann, und die Binärzeile sind die Bits, aus denen die Hexadezimalziffern überhaupt erst entstanden sind. Dabei ist die Dezimalzeile die einzige, die als gewöhnliche Zahl mit Tausenderpunkten gedruckt wird — 10842 erscheint dort als 10.842 —, während die Hexadezimal- und die Binärzeile Ziffernfolgen ohne jede Gruppierung bleiben; eine Hexadezimalzahl mit Tausenderpunkt wäre keine Ziffernfolge mehr, die man zurück in das Eingabefeld kopieren könnte. Groß- und Kleinschreibung ist gleichwertig: 2a3f und 2A3F sind dieselbe Zahl, und beide werden angenommen, während die Antwort immer in Großbuchstaben erscheint, weil das die Form ist, die in Datenblättern und Disassemblierungen üblich ist. Die Division ist eine ganzzahlige Division, ein Rest bekommt deshalb eine eigene Zeile statt eines Dezimalpunkts. Und weil jede Hexadezimalziffer genau vier Bit fasst, ist ein Byte genau zwei Ziffern: Der Wechsel zwischen den beiden Schreibweisen ist aus diesem Grund kein Rechnen, sondern nur ein Umsortieren.
Formel
2A3F + 1B = 2A5A (10.815 + 27 = 10.842)
- 2A3F
- Die erste der beiden Zahlen, geschrieben zur Basis sechzehn. Die Buchstaben sind Ziffern: A ist zehn, B ist elf, bis F für fünfzehn. Das A für etwas anderes zu halten, ist genau der Fehler, den diese Seite verhindern soll
- + − × ÷
- Die Rechenart. Sie läuft spaltenweise genau wie in der Dezimalrechnung, nur mit sechzehn als Basis statt zehn, sodass eine Spalte überträgt, sobald sie über das F hinausgeht
- F + 1 = 10
- Die Übertragsregel in dieser Basis: fünfzehn plus eins geht über den Ziffernvorrat hinaus und beginnt eine neue Spalte. Es ist dasselbe Ereignis wie 9 + 1 = 10 im Dezimalsystem, nur eine Basis weiter
- sum of digit × 16ⁿ
- Wie die Dezimalfassung entsteht: jede Ziffer mit ihrem Stellenwert multipliziert und die Ergebnisse addiert. So kommt 2A3F auf 10.815 — 8.192 plus 2.560 plus 48 plus 15
- 4 bits per digit
- Warum diese Basis überhaupt benutzt wird. Eine Hexadezimalziffer fasst genau vier Binärziffern, ein Byte also genau zwei von ihnen, und für den Wechsel zwischen beiden Schreibweisen ist deshalb keine Rechnung nötig, sondern nur ein Umsortieren
- remainder
- Was übrig bleibt, wenn eine Division nicht aufgeht. Die Zeile steht immer da und liest sich bei den drei Rechenarten, die keinen Rest hinterlassen können, als 0 — eine Null an dieser Stelle heißt, dass nichts übrig geblieben ist, und nicht, dass die Zeile nicht gefüllt wurde
- 53 bits
- Wie breit eine Eingabe hier sein darf: bis 9007199254740991, was in dieser Basis 1FFFFFFFFFFFFF ist — vierzehn Ziffern. Jenseits dieser Breite kann eine Maschinenzahl ihre Nachbarn nicht mehr auseinanderhalten, und die Rechnung wäre stillschweigend nicht mehr exakt
Hexadezimal ist das, was aus dem Binären wird, sobald ein Mensch es lesen muss. Überall dort, wo ein Wert sechzehn Bit oder breiter ist — eine Speicheradresse, eine Farbe, ein Hash, ein Maschinencode-Listing, ein Registerauszug, ein Netzwerk-Mitschnitt —, wird er in dieser Basis gedruckt, und auf solchen Werten zu rechnen ist für jeden, der auf dieser Ebene arbeitet, Tagesgeschäft. Einen Versatz auf einen Zeiger addieren, die Größe einer Struktur ausrechnen, eine Prüfsumme bilden, beim Debuggen einen Adressbereich durchlaufen oder nachsehen, welche Bits eine Maske setzt: All das sind Rechnungen auf Hexadezimalzahlen, und die Binärzeile neben dem Ergebnis ist das, was das Ergebnis wieder in die Flags und Felder zurückübersetzt, für die es steht. Gestalter und Frontend-Entwickler begegnen der Basis in Farbwerten, wo ein Ziffernpaar je Kanal genau das Byte ist, das der Bildschirm haben will. Die Seite wird auch in die andere Richtung benutzt: Ein dezimal bekannter Wert wird hexadezimal hingeschrieben, um ihn mit einer Vorgabe zu vergleichen oder in ein Werkzeug einzufügen, und die Binärzeile beantwortet dabei die Frage, welche Bits tatsächlich gesetzt sind. Wer die Zahlensysteme gerade lernt, zieht denselben Nutzen, denn die Buchstaben sind der Teil, der willkürlich aussieht, solange die Stellenwerte nicht daneben liegen. Und wer einfach nur eine Zahl umrechnen will, nimmt statt dieses Hexadezimalrechners einen der Umrechner, die von dieser Seite aus verlinkt sind.
Rechenbeispiele
2A3F und 1B addieren
- Die beiden Zahlen rechtsbündig untereinanderschreiben: 2A3F über 001B
- Rechte Spalte: F + B, also 15 + 11 = 26 = 16 + 10, folglich A hinschreiben und 1 übertragen
- Nächste Spalte: 3 + 1, dazu der Übertrag 1, ergibt 5, also 5 hinschreiben
- Nächste Spalte: A + 0 = A, also A hinschreiben
- Linke Spalte: 2 + 0 = 2, also 2 hinschreiben
- Das Ergebnis lautet 2A5A, dezimal 10.842
Der Standardfall und zugleich der Beleg dafür, dass ein Übertrag die Buchstabengrenze überschreiten kann: F plus B ist sechsundzwanzig, also eine Sechzehn und zehn darüber hinaus, und die hingeschriebene Ziffer ist deshalb A und keine zweistellige Zahl. Die Binärzeile sind dieselben Bits, zu je vier neu gruppiert — eine brauchbare Probe für die ganze Rechnung.
2A3F durch 1B teilen
- Das ist 10.815 geteilt durch 27
- Die 27 passt vierhundertmal in die 10.815, und es bleiben 15 übrig
- Vierhundert ist hexadezimal 190, und der Rest fünfzehn ist F
- Die Seite meldet 190 mit dem Rest F
Der Rest ist hier F, also fünfzehn — ein Wert, der einen Buchstaben braucht, obwohl er kleiner ist als der Divisor. Und es ist das Beispiel, das die immer vorhandene Restzeile rechtfertigt: Ohne sie stünde dort nur 190, und 400 mal 27 ist 10.800 und nicht 10.815.
Dieselbe Summe in Kleinschreibung
- Klein- und Großbuchstaben sind dieselben Ziffern: a ist zehn, genau wie A
- Die Rechnung ändert sich nicht, das Ergebnis ist also dasselbe 2A5A
- Die Seite druckt ihre Antwort unabhängig von der Eingabe in Großbuchstaben
Wissenswert, weil beide Schreibweisen täglich im Einsatz sind — Farbwerte in CSS werden fast immer klein geschrieben, Disassemblierungen und Datenblätter dagegen groß — und keine von beiden falsch ist. Normalisiert wird nur die gedruckte Antwort, und zwar nach oben.
Einschränkungen
Diese Seite rechnet ausschließlich mit ganzen Hexadezimalzahlen. Es gibt keinen Hexadezimalpunkt und keine gebrochene Eingabe, 2A.8 wird also nicht angenommen; eine Division, die nicht aufgeht, liefert einen abgeschnittenen Quotienten plus Rest statt eines Bruchs. Eingaben sind auf 1FFFFFFFFFFFFF begrenzt, also auf 9007199254740991 — die Breite, ab der eine Maschinenzahl benachbarte Werte nicht mehr auseinanderhalten kann —, und Ergebnisse müssen unter derselben Grenze bleiben, ein Überlauf wird also gemeldet und nicht genähert beantwortet. Negative Ergebnisse tragen ein Minuszeichen vor der Ziffernfolge und werden nicht im Zweierkomplement geschrieben; eine feste Wortbreite wird nicht angenommen, 1B ist hier zwei Ziffern und nicht das niedrige Byte von irgendetwas. Kleinschreibung wird angenommen, die Antwort erscheint in Großschreibung. Die Division durch null wird abgelehnt. Diese Seite rechnet und rechnet zwischen drei Basen um; Bitoperationen beherrscht sie nicht, und AND, OR, XOR und Verschiebungen gibt es hier nicht.
Häufige Fragen
- Was bedeuten die Buchstaben A bis F?
- Sie sind Ziffern. Die Basis sechzehn braucht sechzehn verschiedene Ziffernzeichen, und das vertraute Zehnersystem liefert nur zehn, also stehen A bis F für zehn bis fünfzehn — A ist zehn und F ist fünfzehn. Verschlüsselt wird mit der Buchstabenwahl nichts; es sind einfach die nächsten Zeichen des Alphabets, und jedes andere Set aus sechzehn Zeichen würde denselben Dienst tun. Groß- und Kleinschreibung bezeichnen hier dieselbe Ziffer.
- Warum wird hier erst bei F übertragen und nicht schon bei 2?
- Weil die Basis eine andere ist und die Spalte deshalb an einer anderen Stelle überläuft. Im Dualsystem gibt es keine Ziffer für die Zwei, also wird schon bei 1 + 1 übertragen. Im Hexadezimalsystem gibt es Ziffern bis fünfzehn, eine Spalte überträgt also erst, wenn die Summe über das F hinausgeht. Zwei plus zwei ist in jeder Basis vier; es ändern sich nur die Zählzeichen.
- Ist es egal, ob ich groß oder klein schreibe?
- Ja. 2a3f und 2A3F sind dieselbe Zahl, und beide werden angenommen, denn die Buchstaben sind Ziffern und eine Ziffer ist nicht schreibungsabhängig. Die Antwort wird unabhängig davon in Großbuchstaben gedruckt, weil Datenblätter und Disassemblierungen diese Form verwenden, während Farbwerte meist klein geschrieben werden. Beides zuzulassen kostet nichts, eines davon abzulehnen wäre willkürlich.
- Was ist die größte Zahl, die ich eingeben kann?
- 1FFFFFFFFFFFFF, also vierzehn Hexadezimalziffern, was dezimal 9007199254740991 entspricht — binär eine Eins gefolgt von dreiundfünfzig Einsen. Oberhalb dieser Breite kann eine Maschinenzahl benachbarte ganze Zahlen nicht mehr auseinanderhalten, die Rechnung wäre also stillschweigend nicht mehr exakt: Das Ergebnis sähe aus wie eine Zahl, ohne eine zu sein. Längere Eingaben werden deshalb abgelehnt statt abgeschnitten, und ein Ergebnis über derselben Grenze ebenfalls.
- Kann ich hier auch Bitoperationen rechnen?
- Nein. Diese Seite rechnet die vier Grundrechenarten und rechnet zwischen drei Basen um; AND, OR, XOR und Verschiebungen sind nicht dabei. Für Masken und Bitfelder braucht man genau die. Wer nur eine einzelne Zahl umrechnen will, ist bei den Umrechnern für Hexadezimalzahlen richtig, die von dieser Seite aus verlinkt sind.
- Warum gibt es bei jeder Rechenart eine Restzeile?
- Weil das Ergebnisfeld eine feste Menge von Zeilen ist und keine Liste, die mit der Rechenart ihre Form ändert; eine Zeile, die kommt und geht, wäre schwerer zu lesen als eine, die stehen bleibt. Addieren, Subtrahieren und Multiplizieren ganzer Zahlen können keinen Rest hinterlassen, dort steht also eine 0, und diese Null ist die ehrliche Antwort und kein Platzhalter. Bei der Division verhindert sie, dass ein abgeschnittener Quotient wie ein exaktes Ergebnis aussieht.
Quellen
- Hexadecimal — the base-sixteen system, the digits beyond nine, and the relationship between one hexadecimal digit and four binary digits — Wolfram MathWorld (United States)
- Number base — why a numeral's value depends on its position and on the base, and how the same quantity is written in different bases — Wolfram MathWorld (United States)
- IEEE 754 — the double-precision format these calculations are carried out in, and the 53-bit significand that fixes this page's input ceiling — IEEE Standards Association (United States)
- Hexadezimalsystem — die deutsche Fachbezeichnung für das Sechzehnersystem, mit Herkunft des Wortes und seiner Verwendung in der Datenverarbeitung — DWDS – Digitales Wörterbuch der deutschen Sprache