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

JavaScript计算位1的个数(汉明重量)代码运行结果异常问题排查

代码存在的错误
  • count变量放在for循环内部初始化,每次循环都会被重置为0,无法累计所有1的位数
  • mask变量放在for循环内部初始化,每次循环都重置为1,永远只会校验最低位,无法遍历高位
  • mask <<= 1移位操作写在if判断分支内,只有当前校验位是1的时候才会移位,否则mask永远保持为1,不会继续校验后续位
  • return语句放在for循环内部,第一次循环执行结束就直接返回结果,32位仅校验了最低位就终止了函数执行
  • 循环变量i未显式声明,会被挂载为全局变量,存在变量污染风险
修正后的代码
var hammingWeight = function(n) {
    let count = 0;
    let mask = 1;
    for (let i = 0; i < 32; i++) {
        if ((mask & n) != 0 ) {            
            count++;
        }
        mask <<= 1;
    }
    return count;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:45:04