为什么在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