码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer 二进制中1的个数

时间:2020-05-19 20:46:52      阅读:47      评论:0      收藏:0      [点我收藏+]

标签:剑指offer   1的个数   补码   题目   nbsp   strong   一个   turn   class   

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

代码:

 1 class Solution {
 2 public:
 3      int  NumberOf1(int n) {
 4          int flag = 1; //设置 1 为标志位
 5          int count = 0;
 6          while ( flag != 0 ){ //由于int类型共32位故在flag左移出界时,跳出循环
 7              if( n & flag ) //& 按位与,即flag只有一位为 1 故 只有n对应位也为1时才可
 8                  count ++;
 9              flag = flag << 1; //左移一位
10          }
11          return count;
12      }
13 };

我的笔记:使用 & 按位与符号并设置一个标志位 flag 与 n 进行 与 操作。

注:负数在右移时是默认左侧补 1,而正数是补 0 。 

剑指offer 二进制中1的个数

标签:剑指offer   1的个数   补码   题目   nbsp   strong   一个   turn   class   

原文地址:https://www.cnblogs.com/john1015/p/12918871.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!