数数字二进制表示中1的个数

客官°小女子只卖身不卖艺 2022-10-20 12:15 325阅读 0赞
  1. 数数字二进制表示中1的个数

参考《编程之美》代码,如下三个方法(剩余两种方法不考虑)

对于Count1,无论正数还是负数,否可以正确数出其中1的个数。而对于 Count2,如果参数写为int v,传递负数,则进入死循环,而对于Count3,如果为负数,其中的符号位上的1无法计数。

  1. #include <iostream>
  2. using namespace std;
  3. int Count( int v)
  4. {
  5. int num = 0;
  6. while(v)
  7. {
  8. v &= (v-1);
  9. num++;
  10. }
  11. return num;
  12. }
  13. int Count2(unsigned int v)
  14. {
  15. int num = 0;
  16. while(v)
  17. {
  18. num += v & 0x01;
  19. v >>= 1;
  20. }
  21. return num;
  22. }
  23. int Count3( unsigned int v)
  24. {
  25. int num = 0;
  26. while(v)
  27. {
  28. if(v%2 == 1)
  29. {
  30. num++;
  31. }
  32. v /= 2;
  33. }
  34. return num;
  35. }
  36. int main()
  37. {
  38. cout << "The Count of 1: " << Count(-1) << endl;
  39. cout << "The Count of 1: " << Count2(-1) << endl;
  40. cout << "The Count of 1: " << Count3(-1) << endl;
  41. return 0;
  42. }

By Andy @ 2013-09-14

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读

    相关 二进制1个数

    给定一个一个字节(8位)的无符号整型数,求它的二进制数表示中1的个数。 分析:一个比较容易想到的方法是从低位到高位判断是否为1,每得到一位就把这个数右移,这样只需取最低位即可

    相关 二进制1个数

    [二进制数中1的个数][1] 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。   思路:在平时的学习中感受不到位运算的精妙,但是在一