按位OR掩码产生意外的负数

时间:2018-04-28 00:45:11

标签: javascript bit-manipulation bitwise-operators bitwise-or

我正在试验javascript中的按位运算符以试图获得直觉。我想输入两个32位二进制文​​字,或者它们一起输入,并以二进制格式输出结果。以下面的代码为例,我认为将0b1000和0b0100组合在一起会产生1100.而且确实如此!但是,当我运行下面的程序时,我得到-1000000000000000000000000000000。我对javascript有足够的了解,怀疑问题可能与语言将其64位双精度浮点数视为32位块这一事实有关(如果我可以称之为?)我不能轻易将底层现实与下面代码的奇怪行为联系起来。有什么想法吗?

let initial = 0b10000000000000000000000000000000;
let orMask = 0b01000000000000000000000000000000;
console.log(initial.toString(2));
console.log(orMask.toString(2));
console.log((initial | orMask).toString(2));

0 个答案:

没有答案