二进制中1的个数(bitset)(原反补码)

  • 问题描述
      输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

  • 问题分析
      当然是用STL大法了,直接看代码吧。(需要头文件< bitset >哟)

  • 代码实现
class Solution {
public:
     int  NumberOf1(int n) {
         return bitset<sizeof(n)*8>(n).count();
     }
};

  下面来说一下这一句关键代码的意思:
  bitset< sizeof(n)*8 >(n).count();
    sizeof(n)*8表示有4*8=32个比特位
    n表示把int型参数n存到bitset中
    count( )函数就是求在bitset中1的个数

猜你喜欢

转载自blog.csdn.net/ananbei/article/details/81019415