计算二进制数的 1 的最佳方法

Best way to count 1's of a binary number

做一个关于codility的问题,被要求取两个数字并得到产品。然后获取该数字的二进制表示并计算二进制数中的个数。 我的密码是

    return method(int a, int b)
    {
    int count=0;
    int num;
    num = a* b;
    while(num>0)
    {
       if(num %2 ==1)
       {
           count++;
       }
     num = num >> 1;
    }
  return count;
  }

然而它只给出了 50% 的正确率。谁能解释一下。有什么我应该注意的地方我错过了吗?

使用模运算符无法正确计算负数中的位数。请改用 "num & 1"。另外,请确保您使用的是无符号右移,否则负数可能会产生无限循环。

正如 Lashane 所说,尽可能使用 64 位产品。