2016-09-21 140 views
1

爲什麼在JavaScript中:JavaScript和按位運算符

console.log('1000' | '1010'); // 1018不是'1010'?

console.log('1000' & '1010'); // 992不是 '1000'?

在JavaScript中按位計算的正確方法是什麼?

+4

「什麼北京時間爲正道在JavaScript中按位計算?「使用數字,而不是字符串;) – kjaquier

+0

請注意,JavaScript中的按位操作異常緩慢,JS使用雙精度數字類型,但32位整數意味着它必須進行轉換,按位操作並每次轉換*。 –

+0

@ kjaquier:不! - 與數字相同的結果! – jMike

回答

3

你必須定義輸入的二進制數:

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

然後您可以將十進制數轉換爲二進制記數法:

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

謝謝,也使用二進制數字和「二進制字符串」! – jMike

2

輸入數字需要以二進制形式定義。操作後,由於按位運算產生十進制數,因此需要將結果再次轉換爲二進制。以下代碼將生成您想要的輸出。

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

謝謝,這個作品! – jMike

2

它的使用你把十進制數的二進制數。你實際上得到

0000001111101000 | 0000001111110010 
0000001111101000 & 0000001111110010 

這相當於1018和992在小數

+0

謝謝,我現在明白了問題和結果。 – jMike