Dieses kleine Javascript-Programm rechnet beliebig grosse Zahlen in die entsprechenden Dezimal-, Hexadezimal-, Binär- und Oktalwerte sowie das Einer- und Zweierkomplement um. In die oberen Felder einen Wert eintragen, Eingabetaste drücken und dann aus allen anderen Feldern die Resultate herauslesen.
Input:
Dec
Hex
Bin
Oct
Unsigned
Dec
Hex
Bin
Oct
8
16
32
64
n
One's Complement
Hex
Bin
Oct
8
16
32
64
n
Two's Complement
Dec
Hex
Bin
Oct
8
16
32
64
n
Dieser Umrechner existiert auch als Applikation Bit Fiddle auf Windows und macOS.
Die resultierenden Werte werden in verschiedenen Bit-Grössen angegeben, wobei der Wert binär auf die entsprechende Anzahl (least significant) Bits abgeschnitten wird. Das Resultat bei n Bits passt sich der Grösse des Wertes an, gibt somit stets den kompletten Wert ohne Abschneiden, jedoch mit der minimal benötigten Anzahl Bits für die unsigned-Variante zurück.
Folgende Zeichen können eingegeben werden:
Dec 0,1,2,3,4,5,6,7,8,9
Hex 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,A,B,C,D,E,F
Bin 0,1
Oct 0,1,2,3,4,5,6,7
Alle anderen Zeichen werden schlicht überlesen. Dadurch ist es möglich, auch anderweitig formatierte Werte (wie beispielsweise eine Hexadezimalzahl mit Prefix 0x) ohne Probleme einzutragen. Vorsicht mit Dezimal-Punkt! Dieser wird ebenfalls nicht erkannt, was bedeutet, dass ein Wert wie beispielsweise 123.456 als 123456 eingelesen wird. Bei der Ausgabe werden die Werte mit automatisch generierten Trennzeichen versehen, um die Darstellung im Browser zu erleichtern und die Lesbarkeit zu erhöhen.
Bei der Dezimal-Darstellung werden negative Zahlen des Zweier-Komplements mit Vorzeichen angegeben. Achtung: Das Resultat des Komplements muss nicht zwingendermassen die negative Variante des eingegebenen Wertes sein, denn durch das Abschneiden von überschüssigen Bits kann es sein, dass die Werte komplett anders herauskommen. Die Dezimalangabe des Einerkomplements ist standardmässig ausgeschaltet, da das Einerkomplement auf heutigen Computern nur Binär, Hexadezimal oder Oktal einen Sinn macht. Für interessierte sei jedoch darauf hingewiesen, dass der für die Darstellung benötigte Code (siehe Source-Code dieser Seite) nur auskommentiert ist.
Die Grösse der Werte ist nur durch die Leistungsfähigkeit von Javascript beschränkt.
Wie rechnet das Programm?
Das Programm funktioniert auf kompletter Array-Basis. Sämtliche Eingabewerte werden zuerst in ihre binäre Darstellung umgewandelt und die Bits in einem Array gespeichert. Da ein Array grundsätzlich beliebig gross sein kann, können auch beliebig grosse Werte eingegeben werden. Für jede Darstellung wird dieses Array bitweise umgewandelt und ein jeweiliger Ausgabe-String erzeugt. So wird beispielsweise bei der Hexadezimal-Eingabe 5a7f das Array 0101101001111111 generiert, woraus dann der Dezimal-Ausgabestring 23 167 entsteht.
Das grösste Problem bei einer bitweisen Umrechnung sind die Dezimalzahlen: Die Richtung Dezimal-Binär ist noch relativ einfach durch einige einfache Additionen möglich, die Richtung Binär-Dezimal jedoch musste mittels eines Subtraktionsalgorithmus nachgebildet werden.
Da das Programm mit Arrays funktioniert, ist es nicht weltklasse-performant, aber schnell genug.
Der Leser ist herzlich eingeladen, den Source-Code anzuschauen. Bei Fehlern oder bei sonstigen Kommentaren kann einfach eine Email an den Autor geschrieben werden. Zusätzliche Informationen zu solchen Bit-Spielereien können hier nachgelesen werden: