2016-09-21 13 views
1

なぜJavaScriptのですか?JavaScriptとビット単位の演算子

console.log('1000' | '1010'); // 1018ではなく、 '1010'ですか?

と '1000'

console.log('1000' & '1010'); // 992ありませんか?

JavaScriptのビット単位の計算にはどのような方法がありますか?

+4

を得ている。あなたが入れた10進数のバイナリ同等のものを使用していますJavaScriptのビット単位の計算ですか? – kjaquier

+0

JavaScriptでのビット単位の操作が異常に遅いことに注意してください.JSは数値型では倍精度を使用しますが、変換するビット単位の意味では32ビットの整数を使用し、ビット単位の操作を行い、*毎回*に変換します。 –

+0

@ kjaquier:いいえ! - 数値と同じ結果! – jMike

答えて

3

あなたが進数として入力を定義する必要があります。

console.log(0b1000 | 0b1010); 
> 10 

次にあなたがバイナリ表記に小数をバックに変換することができます

Number(10).toString(2); 
> "1010" 
+1

ありがとうございます。バイナリ数字と "バイナリ文字列"も使用できます! – jMike

2

入力番号はバイナリで定義する必要があります。演算の後、結果をバイナリに変換する必要があります。これは、ビット単位の演算で10進数が生成されるためです。次のコードはあなたの望む出力を生成します。

console.log(('0b1000' | '0b1010').toString(2)); 
console.log(('0b1000' & '0b1010').toString(2)); 
+0

ありがとう、これは動作します! – jMike

2

それはあなたが実際に何のための正しい方法IST」小数

に1018と992と同等である

0000001111101000 | 0000001111110010 
0000001111101000 & 0000001111110010 

+0

ありがとう、私は今問題と結果を理解しています。 – jMike

関連する問題