正または負の整数を 2 進数で表示したいと思います。
むしろこの質問ただし、JavaScript 用です。
ベストアンサー1
function dec2bin(dec) {
return (dec >>> 0).toString(2);
}
console.log(dec2bin(1)); // 1
console.log(dec2bin(-1)); // 11111111111111111111111111111111
console.log(dec2bin(256)); // 100000000
console.log(dec2bin(-256)); // 11111111111111111111111100000000
使用できますNumber.toString(2)
関数ですが、負の数を表すときにいくつか問題があります。たとえば、(-1).toString(2)
出力は です"-1"
。
この問題を解決するには、符号なし右シフトビット演算子(>>>
) を使用して、数値を符号なし整数に強制変換します。
実行すると、(-1 >>> 0).toString(2)
数値が 0 ビット右にシフトされます。数値自体は変更されませんが、符号なし整数として表されます。上記のコードは"11111111111111111111111111111111"
正しく出力されます。
この質問さらに詳しい説明があります。
-3 >>> 0
(右論理シフト) は引数を符号なし整数に強制変換します。そのため、-3 の 32 ビットの 2 の補数表現が得られます。