You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中两个26位二进制数按位与运算结果为0的原因是什么

问题原因

  • 第一个也是最核心的错误:你没有指定二进制字面量标识
    JS 中直接书写的数字默认会被解析为十进制值,如果你要声明二进制数,必须在数值前添加0b前缀。你代码里的a、b都被当成了超大的十进制整数参与运算,和你预期的二进制值完全不符,自然按位与的结果和预期不一致。
    额外说明:如果数字开头带多余的0,在非严格模式的老旧运行环境中还会被错误解析为八进制数,进一步偏离预期值。
  • 不是有符号数的问题
    你使用的26位二进制数最高位是第25位(从0开始计数),远低于JS按位运算默认采用的32位有符号整数的符号位(第31位),不会触发符号位判定逻辑,你的相关猜测不成立。

正确实现

给二进制常量加上0b前缀即可得到你预期的结果:

const a = 0b00000100000001000001000100;
const b = 0b11111100000000000000000000;
console.log(a & b); // 输出1048576,对应二进制就是你预期的100000000000000000000

如果后续需要处理超过32位的二进制数按位运算,建议使用BigInt类型避免溢出,只需要给字面量末尾加n后缀即可:

const a = 0b00000100000001000001000100n;
const b = 0b11111100000000000000000000n;
console.log(a & b); // 输出1048576n

内容的提问来源于stack exchange,提问作者Vagrant Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:06:03