【问题标题】:Node JS function that takes an unsigned integer and returns wrong number of '1' bits接受无符号整数并返回错误数量的“1”位的 Node JS 函数
【发布时间】: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。使用constlet
  • 仅供参考,尝试在 Javascript 中进行二进制位操作操作存在很多陷阱,因为它实际上并不是为此而构建的。
  • 这个0b11111111111111111111111111111101 就像一个魅力,添加0b 作为前缀有什么意义?想法?
  • 你只需要指定你声明的是二进制而不是十进制。只是不要超过 31 位,因为这些值仍然在内部存储在双精度中。

标签: javascript node.js typescript ecmascript-6


【解决方案1】:

当你调用hammingWeight(101)时,你使用的不是二进制字符串 1012 (4+1 = 5),而是十进制数10110 (one hundred and one)。请改用hammingWeight(0b101)

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 2018-09-19
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2016-09-15
    • 2022-01-02
    相关资源
    最近更新 更多