Dezimalzahl in Binärzahl umwandeln
Wandelt Dezimalzahlen in Binärzahlen um — und Binärzahlen zurück in Dezimalzahlen.
Dieses JavaScript wandelt eine Dezimalzahl in eine Binärzahl um — und umgekehrt: Auch Binärzahlen könnt ihr damit zurück in Dezimalzahlen übersetzen. Das Binärsystem (auch Dualsystem genannt) kennt nur die Ziffern 0 und 1 und ist die Sprache, in der Computer intern rechnen — jede Stelle steht dabei für eine Zweierpotenz statt für eine Zehnerpotenz.
Die Bedienung ist einfach: Tragt in das obere Feld eine Dezimalzahl ein und klickt auf den Knopf daneben — die Binärzahl erscheint im unteren Feld. In die andere Richtung funktioniert es genauso: Binärzahl ins untere Feld, Knopf daneben klicken, und die Dezimalzahl steht oben. Als Beispiel ist die Binärzahl 1010 vorausgefüllt, das ist die dezimale 10.
Danke an unseren User Vollautomatisch, der einen Fehler im ursprünglichen JavaScript ausgebessert hat, so dass es fehlerfrei funktioniert.
Wer noch mit anderen Zahlensystemen jongliert, findet im Archiv auch einen Umrechner von Hexadezimal zu Dezimal sowie ein Script für römische Zahlen.
Ab etwa 16 Stellen (Werte über 253) rechnet JavaScript nicht mehr auf die Ziffer genau.
So funktioniert das Script
Das Script besteht aus zwei Umwandlungsfunktionen — dec2bin() für die Richtung Dezimal → Binär und bin2dec() für den Rückweg — plus zwei Zeilen, die diese Funktionen mit den Knöpfen verbinden. Beide Funktionen lesen ihr Eingabefeld aus, prüfen die Eingabe und schreiben das Ergebnis ins jeweils andere Feld.
const potenzen = [];
for (let i = 0; ; i++) {
const potenz = Math.pow(2, i);
if (potenz > dec) { break; }
potenzen.push(potenz);
}
potenzen.reverse();
Für die Richtung Dezimal → Binär sammelt das Script zuerst alle Zweierpotenzen (1, 2, 4, 8, 16 …), die in die Zahl hineinpassen. Die Schleife hat absichtlich keine Abbruchbedingung im Kopf — sie läuft, bis Math.pow(2, i) größer als die Zahl wird und break sie beendet. reverse() dreht das Array anschließend um, damit die größte Potenz vorn steht — so, wie auch in der fertigen Binärzahl die höchstwertige Stelle links steht.
let binaer = "";
for (let j = 0; j < potenzen.length; j++) {
const einsOderNull = Math.floor(dec / potenzen[j]);
binaer += einsOderNull;
dec -= potenzen[j] * einsOderNull;
}
Dann wird die Binärzahl Stelle für Stelle aufgebaut. Math.floor(dec / potenz) kann nur 1 oder 0 ergeben: 1, wenn die Potenz noch in den Rest der Zahl passt, sonst 0. Diese Ziffer wird hinten an den Text binaer angehängt, und wenn sie 1 war, zieht die letzte Zeile die Potenz von der Zahl ab. Beispiel 10: Es passen 8 (→ 1), dann 4 nicht (→ 0), dann 2 (→ 1), dann 1 nicht (→ 0) — macht 1010.
const ziffern = bin.split("");
ziffern.reverse();
let dec = 0;
for (let i = 0; i < ziffern.length; i++) {
dec += Number(ziffern[i]) * Math.pow(2, i);
}
Der Rückweg ist kürzer: split("") zerlegt die Binärzahl in einzelne Ziffern, reverse() stellt die niedrigste Stelle nach vorn. Dann wird jede Ziffer mit ihrer Zweierpotenz multipliziert und aufsummiert — Stelle 0 zählt 2⁰ = 1, Stelle 1 zählt 2¹ = 2 und so weiter. Aus 1010 wird so 0·1 + 1·2 + 0·4 + 1·8 = 10.
if (!/^[01]+$/.test(bin)) {
ausgabe.textContent = "Eine Binärzahl darf nur aus den Ziffern 0 und 1 bestehen.";
return;
}
Vor dem Rechnen prüft ein regulärer Ausdruck (ein Suchmuster für Texte) die Eingabe: ^[01]+$ bedeutet „vom Anfang bis zum Ende nur Ziffern 0 oder 1, mindestens eine". Passt die Eingabe nicht, erscheint eine freundliche Meldung in der Ergebnisfläche und return bricht ab — so landet nie NaN im Ausgabefeld.
Zum Anpassen: Die Meldungstexte könnt ihr frei umformulieren. Und wer statt ins Binärsystem etwa ins Vierersystem übersetzen will, tauscht in beiden Funktionen die Basis in Math.pow(2, …) — die Ziffernprüfung und die 1-oder-0-Logik müssten dann allerdings mitwachsen.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Mathematik
-
5 Zahlen
-
Altersberechnungen
-
Anzahl der Stellen von Potenzen kalkulieren
-
Barrel in Liter
-
Beliebige Wurzel ziehen
-
Binomialverteilung
-
Collatz Problem
-
Denk Dir eine Zahl
-
Dezimalbruch
-
Die Kamelhändler
-
Downloadzeit-Rechner
-
Drehender Kreis 1
-
Drehender Kreis 2
-
Drehender Kreis 3
-
Dreiecksrechner
-
Dreisatz
-
Dreisatz antiproportional
-
Einfacher Euro-Rechner
-
Fakultät berechnen
-
Fakultätsrechner
-
Fibonacci Reihe berechnen
-
Fibonacci-Zahlen
-
Flächenberechnung / Dreieck
-
Flächenberechnung / Kreis
-
Flächenberechnung / Parallelogramm
-
Flächenberechnung / Rechteck
-
Flächenberechnung / Trapez
-
Gedanken lesen
-
Geschwindigkeitsmesser