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

JavaScript(Node.js)中0xffffffff按位与运算结果异常的原因咨询

问题解释

首先明确两个核心规则:

  • JavaScript的数字类型是64位双精度浮点数,能精确表示范围在-(2^53 - 1)到2^53 - 1之间的整数。
  • 所有位运算(包括&)会先将操作数转换为32位有符号整数再计算。

赋值时的行为

const num = 0xffffffff中,十六进制的0xffffffff对应的十进制是4294967295,这个数在64位浮点数的精确表示范围内,所以变量num存储的就是这个无符号整数的值,直接输出时自然显示4294967295。

按位与运算的行为

当执行num & num时,JavaScript会先把num(值为4294967295)转换为32位有符号整数:

  • 4294967295的二进制是32个1:11111111 11111111 11111111 11111111
  • 在32位有符号整数规则中,最高位是符号位,1代表负数。这个二进制数是-1的补码表示(补码规则下,-1的32位二进制就是全1)。
  • 所以转换后的数值是-1,执行-1 & -1的结果自然是-1。

内容的提问来源于stack exchange,提问作者y. bs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:50:56