计算二进制数的 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 位产品。
做一个关于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 位产品。