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

Posted wxwhnu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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

 

以上是关于剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer11

剑指offer-11-二进制中1的个数

剑指offer 11. 二进制中1的个数

[剑指offer] 11. 二进制中1的个数

剑指Offer-Java-二进制中1的个数

剑指Offer-Java-二进制中1的个数