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

如何用二进制运算符实现目标输出?JavaScript位运算求助

问题原因与解决方案

你的代码无法得到期望结果,核心原因是JavaScript的常规位运算符仅针对32位有符号整数操作:

  • 执行var1 << 32时,32位整数的所有有效位会被完全移出,结果直接变为0,导致后续拼接逻辑完全失效
  • 虽然目标值0x4C4400030001在Number的精度范围内(小于2^53),但位运算的32位限制让你无法通过这种方式构建大整数

正确实现方式

使用BigInt处理任意精度整数运算,就能支持超过32位的位移操作,代码如下:

const var1 = 0x4C44n;
const var2 = 3n;
const var3 = 1n;

const result = (var1 << 32n) + (var2 << 16n) + var3;

console.log(result.toString(16)); // 输出 4c4400030001

如果不想修改原始变量的类型,也可以在运算时临时转换为BigInt:

const var1 = 0x4C44;
const var2 = 3;
const var3 = 1;

const result = (BigInt(var1) << 32n) + (BigInt(var2) << 16n) + BigInt(var3);

console.log(result.toString(16));

关键说明

  • BigInt支持任意长度的整数运算,不会出现32位截断的问题
  • 位移量必须使用BigInt类型(如32n),否则会抛出类型错误
  • 最终结果为BigInt类型,调用toString(16)即可得到目标十六进制字符串

内容的提问来源于stack exchange,提问作者André Fiedler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:15:42