二进制中1的个数

在这里插入图片描述

  • 该题让求二进制表示数中1的个数,由于负数在右移之后计算机会在开头一位自动补上1,所以负数右移将无法终止循环,需要将负数转成无符号整数

class Solution {
public:
    int NumberOf1(int _n) {
        
        int res=0;
        
        unsigned int n=_n;   //负数右移后会在最高位补上1,无法结束循环
        
        while(n){
            
            if(n&1)res++;
            
            n=n>>1;
        }
        
        return res;
    }
};
posted @ 2020-06-01 18:45  zzcxxoo  阅读(122)  评论(0)    收藏  举报