剑指offer--二进制中的1的个数

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

解题思路:负数用补码表示,就不用在乎正数和负数了。直接位运算来计算1的数量。

class Solution {
public:
int NumberOf1(int n) {
unsigned int flag=1;

     int count=0;
     
     int result=0;
     
     while(flag)
     {
         result=n&flag;
         if(result)
             ++count;
         flag=flag<<1;
     }
     return count;
 }

};

猜你喜欢

转载自blog.csdn.net/qq_42987442/article/details/88683355