我正在尝试使用 javascript 中的按位运算符来获得直觉。我想输入两个 32 位二进制文字,或将它们放在一起,并以二进制格式输出结果。以下面我的代码的 4 位模拟为例,我预计 0b1000 和 0b0100 的 ORing 将产生 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));