Wie schreibe ich eine Zahl in Javascript?
%Vor%Angenommen, dass a und b signiert werden können.
Ich möchte eine vorzeichenbehaftete 4-Byte-Ganzzahl in eine 4-Byte-Ganzzahl ohne Vorzeichen konvertieren.
Ich weiß, dass es in Javascript kein Typcasting oder Signed / Unsigned gibt. Ich suche nach einem leicht verständlichen Algorithmus.
Sie können versuchen, a = arg1>>>0
, aber ich bin mir nicht sicher, es wird tun, was Sie suchen.
Siehe diese Frage für weitere Details.
können Sie auch
verwenden %Vor%z.B.
%Vor%Erklärung: JavaScript folgt nicht den herkömmlichen Integer-Casting-Konventionen für die Maschinenarchitektur wie C, sondern bevorzugt Einfachheit und Portabilität gegenüber niedriger Effizienz. Die typisierten Arrays (Uint8Array et al) in JavaScript wurden jedoch speziell für den Zweck effizienter und gut definierter Multi-Byte- und Bit-Level-Operationen hinzugefügt. Daher können wir diese Tatsache ausnutzen, um auf gut definierte und integrierte Bit-Casting-Operationen zuzugreifen. Die Syntax im obigen Beispiel:
Alle (primitiven) Zahlen in Javascript sind IEEE748-Doubles, wodurch Sie 52 Bits ganzzahliger Genauigkeit erhalten.
Das Problem mit signed vs unsigned ist, dass alle Javascript bitweisen Operatoren außer >>>
die Zahlen in eine 32-bit signierte Zahl umwandeln - das heißt, sie nehmen die niedrigstwertigen 32 Bits und wirf den Rest weg, und dann wird das resultierende Bit 31 vorzeichenerweitert, um ein signiertes Ergebnis zu erhalten.
Wenn Sie mit den vier bekannten Bytewerten beginnen, können Sie das Problem mit den bitweisen Operatoren umgehen, indem Sie stattdessen einfache Multiplikationen und Additionen verwenden, die alle 52 Bits mit ganzzahliger Genauigkeit verwenden, z. B.
%Vor%Tags und Links javascript