爲什麼在JavaScript中:JavaScript和按位運算符
console.log('1000' | '1010'); // 1018
不是'1010'?
和
console.log('1000' & '1010'); // 992
不是 '1000'?
在JavaScript中按位計算的正確方法是什麼?
爲什麼在JavaScript中:JavaScript和按位運算符
console.log('1000' | '1010'); // 1018
不是'1010'?
和
console.log('1000' & '1010'); // 992
不是 '1000'?
在JavaScript中按位計算的正確方法是什麼?
你必須定義輸入的二進制數:
console.log(0b1000 | 0b1010);
> 10
然後您可以將十進制數轉換爲二進制記數法:
Number(10).toString(2);
> "1010"
謝謝,也使用二進制數字和「二進制字符串」! – jMike
輸入數字需要以二進制形式定義。操作後,由於按位運算產生十進制數,因此需要將結果再次轉換爲二進制。以下代碼將生成您想要的輸出。
console.log(('0b1000' | '0b1010').toString(2));
console.log(('0b1000' & '0b1010').toString(2));
謝謝,這個作品! – jMike
它的使用你把十進制數的二進制數。你實際上得到
0000001111101000 | 0000001111110010
0000001111101000 & 0000001111110010
這相當於1018和992在小數
謝謝,我現在明白了問題和結果。 – jMike
「什麼北京時間爲正道在JavaScript中按位計算?「使用數字,而不是字符串;) – kjaquier
請注意,JavaScript中的按位操作異常緩慢,JS使用雙精度數字類型,但32位整數意味着它必須進行轉換,按位操作並每次轉換*。 –
@ kjaquier:不! - 與數字相同的結果! – jMike