位运算之二进制中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;

     }
};
全部评论

相关推荐

昨天 13:52
武汉大学 golang
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务