Ich weiß, dass dies 0x
ein Präfix für Hexadezimalzahlen in Javascript ist. Zum Beispiel 0xFF
steht für die Nummer 255.
Gibt es etwas Ähnliches für Binärzahlen? Ich würde erwarten 0b1111
, die Nummer zu repräsentieren 15
, aber das funktioniert bei mir nicht.
javascript
Mischa Moroshko
quelle
quelle
0b0111_0_1_0_1
.Antworten:
Aktualisieren:
Neuere Versionen von JavaScript - insbesondere ECMAScript 6 - bieten Unterstützung für binäre (Präfix
0b
), oktale (Präfix0o
) und hexadezimale (Präfix0x
:) numerische Literale:Diese Funktion ist bereits in Firefox und Chrome verfügbar. Es wird derzeit im IE nicht unterstützt, wird aber anscheinend sein, wenn Spartan eintrifft.
(Dank Semikolon ‚s Kommentar und Antwort des urish für diesen Hinweis.)
Ursprüngliche Antwort:
Nein, es gibt kein Äquivalent für Binärzahlen. JavaScript unterstützt nur numerische Literale in den Formaten Dezimal (kein Präfix), Hexadezimal (Präfix
0x
) und Oktal (Präfix0
).Eine mögliche Alternative besteht darin, eine binäre Zeichenfolge
parseInt
zusammen mit dem Radix an die Methode zu übergeben:quelle
0b
Unterstützung.int type
Nochinteger type
, daher werden alle Ganzzahlen als Gleitkommazahlen gespeichert.In ECMASCript 6 wird dies als Teil der Sprache unterstützt, dh es
0b1111 === 15
ist wahr. Sie können auch Großbuchstaben B (z0B1111
. B. ) verwenden.Suchen Sie
NumericLiterals
in der ES6-Spezifikation .quelle
Ich weiß, dass die Leute sagen, dass die Erweiterung der Prototypen keine gute Idee ist, sondern Ihr Drehbuch ...
Ich mache es so:
quelle
ParseInt("101", 2)
dies die eigentliche Antwort sein könnte!Wenn Ihr Hauptanliegen eher die Anzeige als die Codierung ist, können Sie ein integriertes Konvertierungssystem verwenden:
Ref: JavaScript-Nummernreferenz
quelle
Soweit ich weiß, ist es nicht möglich, einen binären Denoter in Javascript zu verwenden. Ich habe drei Lösungen für Sie, die alle ihre Probleme haben. Ich denke, Alternative 3 sieht in Bezug auf die Lesbarkeit am besten aus und ist möglicherweise viel schneller als die anderen - abgesehen von den anfänglichen Laufzeitkosten. Das Problem ist, dass nur Werte bis zu 255 unterstützt werden.
Alternative 1:
"00001111".b()
Alternative 2:
b("00001111")
Alternative 3:
b00001111
In dieser Version können Sie entweder 8-stellige binäre
b00000000
, 4-stelligeb0000
und variable Ziffern eingebenb0
. Das istb01
illegal, muss man benutzenb0001
oderb1
.quelle
Vielleicht ist dies nützlich:
quelle
bin
wird eine Zahl zugewiesen, die aussieht, als wäre sie binär, wird aber tatsächlich zur Basis 10 analysiert. DieparseInt
Funktion erwartet einen String als erstes Argument, wandelt ihn also in "1111" (Basis 10-Darstellung) um und analysiert ihn dann erneut, als ob es war Basis 2.Nein, aber Sie können parseInt verwenden und optional die Anführungszeichen weglassen.
Der einzige Nachteil beim Weglassen der Anführungszeichen besteht darin, dass Sie bei sehr großen Zahlen schneller überlaufen:
quelle
Konvertieren Sie binäre Zeichenfolgen in Zahlen und umgekehrt.
quelle
Ich weiß, dass dies das gestellte Q (das bereits mehrmals beantwortet wurde) nicht so beantwortet, wie es ist. Ich schlage jedoch vor, dass Sie (oder andere an diesem Thema interessierte Personen) die Tatsache berücksichtigen, dass es am besten lesbar und rückwärts / zukünftig / browserübergreifend kompatibel ist Weg wäre, nur die Hex-Darstellung zu verwenden.
Aus der Formulierung des Q geht hervor, dass Sie nur über die Verwendung von Binärliteralen in Ihrem Code und nicht über die Verarbeitung von Binärdarstellungen numerischer Werte sprechen (für die parstInt der richtige Weg ist).
Ich bezweifle, dass es viele Programmierer gibt, die mit Binärzahlen umgehen müssen, die mit der Zuordnung von 0-F zu 0000-1111 nicht vertraut sind. Bilden Sie also im Grunde Vierergruppen und verwenden Sie die Hex-Notation.
Anstatt 101000000010 zu schreiben, würden Sie 0xA02 verwenden, das genau die gleiche Bedeutung hat, weitaus besser lesbar ist und weniger fehleranfällig ist.
Denken Sie nur an die Lesbarkeit. Vergleichen Sie, welche davon größer ist: 10001000000010010 oder 1001000000010010
und was ist, wenn ich sie so schreibe:
0x11012 oder 0x9012
quelle
quelle