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

NodeJS中十进制转二进制再反转回十进制时偶数输出错误问题

问题根因

你当前的代码没有将输入的十进制数转换为固定32位长度的二进制串,直接反转会丢失高位补位的0,从而导致结果不符合预期:

  • 奇数的二进制末尾为1,反转后开头为1,不会因为前导零被截断导致结果错误,这也是你测试奇数结果正常的原因
  • 偶数的二进制末尾为0,反转后开头的0会被parseInt自动忽略,相当于丢失了原数末尾的0,最终输出结果偏小

修复方案

只需要在转二进制后,用padStart方法补前导零到32位长度,再执行反转操作即可,修复后的代码如下:

function mirror_bits(n) {
    // 转为32位无符号整数后转二进制,补前导0到固定32位长度
    const binStr = (n >>> 0).toString(2).padStart(32, '0');
    const reversedBin = binStr.split('').reverse().join('');
    return parseInt(reversedBin, 2);
}

如果你的业务场景需要处理其他位数的数值,修改padStart的第一个参数为对应位数即可。

验证结果

用你提供的测试用例运行修复后的代码,输出结果完全符合预期:

  • 输入2031768448 → 输出30038174
  • 输入3105510272 → 输出30038173
  • 输入622482304 → 输出30038180
  • 输入3357168512 → 输出30038035
  • 输入1562006400 → 输出30038202
  • 输入3709490048 → 输出30038203

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:03