位运算之二进制中1的个数

二进制中1的个数

https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8?tpId=13&&tqId=11164&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目

输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。

图片说明

题解:

这是位运算的一个的应用,利用位运算中的与运算 + 左移运算

知识点补充:

C++ 提供了按位与(&)、按位或(| )、按位异或(^)、取反(~)、左移(<<)、右移(>>)这 6 种位运算符。 这些运算符只能用于整型操作数,即只能用于带符号或无符号的 char、short、int 与 long 类型。
其中的按位与的
1 & 1 = 1;

class Solution {
public:
     int  NumberOf1(int n) {
      int count = 0;
         while(n)
         {
              if(n&1) //与1相与,等于1表示当前位上的数字为1
             count ++ ;

             n = n >> 1; //再将n右移一位,将之前判断的1右移掉,对剩下的进行判断
         }

         return count;

     }
};
全部评论

相关推荐

北汽福田 工艺岗 8000
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务