我正在试验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));