剑指offer11:输入一个整数,输出该数二进制表示…

2019-08-26 05:42:10来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)

1. 题目描述

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

2. 思路和方法

  使用移位(<<)和 “| & !”操作来实现。1的二进制是:前面都是0,最后一位为1。每次向左移位一下,使得flag的二进制表示中始终只有一个位为1,每次与n做位与操作,这样就相当于逐个检测n的每一位是否是1。unsigned int flag = 1;

3. C++核心代码

3.1 位运算

 1 class Solution {
 2 public:
 3      int  NumberOf1(int n) {
 4          int result = 0;
 5          unsigned int flag = 1;
 6          while(flag)
 7          {
 8              if(n&flag)
 9                  result++;
10              flag = flag<<1;
11          }
12          return result;
13      }
14 };
View Code

 

参考资料

https://blog.csdn.net/qq_28632639/article/details/87966115

 


原文链接:https://www.cnblogs.com/wxwhnu/p/11407508.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:CF1207G Indie Album

下一篇:剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。