剑指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 ;
参考资料
https://blog.csdn.net/qq_28632639/article/details/87966115
以上是关于剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)的主要内容,如果未能解决你的问题,请参考以下文章