【发布时间】:2021-12-31 18:02:07
【问题描述】:
此 Node JS 函数将输入作为有符号 2 的补码以及返回错误“1”位数的任何特定原因
Explanation: The input binary string 11111111111111111111111111111101 has a total of thirty one '1' bits.
这里的函数应该返回 output as 31 而它返回 1
var hammingWeight = function(n) {
let count = 0;
while (n !== 0) {
n = n & (n - 1);
count++;
}
return count;
};
console.log(hammingWeight(11111111111111111111111111111101))
这是控制台输出
PS C:\VSB-PRO> node Fibo.js
1
任何原因可能在 javascript 代码中出错,非常感谢您的帮助
问候,
卡罗琳
【问题讨论】:
-
改成
0b11111111111111111111111111111101,你会得到31。 -
请不要再使用
var。使用const或let。 -
仅供参考,尝试在 Javascript 中进行二进制位操作操作存在很多陷阱,因为它实际上并不是为此而构建的。
-
这个
0b11111111111111111111111111111101就像一个魅力,添加0b作为前缀有什么意义?想法? -
你只需要指定你声明的是二进制而不是十进制。只是不要超过 31 位,因为这些值仍然在内部存储在双精度中。
标签: javascript node.js typescript ecmascript-6