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

标签 java binary bit-shift

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

    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 位产品。

关于java - 计算二进制数中 1 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047792/

相关文章:

c - 从 C 中的二进制文件读取字符串时发生访问冲突

java - 生成所有可能的二进制组合

assembly - 为什么仅在使用单类时才设置溢出标志?

java - 使用 xstream 序列化一个类而不使用其扩展类

java - Tomcat:获取基于 Jersey 的 Rest 服务的短 URL

java - Hybris 更新问题 - azure.abstractbundler6307sn 表不存在

java - 如何在 Netbeans 中插入 main 方法(快捷方式)

perl - 在 Perl 中,我可以将字符串视为字节数组吗?

C - 添加原始字节时的符号

java - 为什么移位运算符>>中的负数结果与正常除法不同?