剑指offer题解C++【11】二进制中1的个数
来源:互联网 发布:5g与广电网络 编辑:程序博客网 时间:2024/05/19 00:37
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路
一个不为0的整数n,如果减1,那么(其二进制表示)原来处于最右边的1将会变为0,这个1后面的0(如果有的话)都会变为1,其余位数保持不变;
让n和n-1进行按位与,即n&(n-1),则会让n最右边的1变为0;
(比如n=1001 1000, n-1=1001 0111, n&(n-1)=1001 0000;)
那么n的二进制中有多少个1,就可以进行多少次这样的操作。
在计算机中,负数本身就是用补码表示的,因此不用考虑这个条件。
代码
class Solution {public: int NumberOf1(int n) { int count=0; while(n){ n=n&(n-1); count++; } return count; }};
阅读全文
0 0
- 剑指offer题解C++【11】二进制中1的个数
- 剑指offer题解 二进制中1的个数
- 《剑指offer》牛客网java题解-二进制中1的个数
- 剑指offer:二进制中1的个数
- 剑指offer:二进制中1的个数
- 【剑指offer】二进制中1的个数
- [剑指Offer]二进制中1的个数
- 【剑指offer】二进制中1的个数
- 剑指offer--二进制中1的个数
- 剑指offer:二进制中1的个数
- 剑指offer 二进制中1的个数
- 剑指offer 二进制中1的个数
- 《剑指offer》二进制中1的个数
- 剑指 offer:二进制中1的个数
- 剑指offer-二进制中1的个数
- 剑指offer 二进制中1的个数
- 剑指offer-二进制中1的个数
- 剑指offer 二进制中1的个数
- 【Caffe】caffe命令行及相关工具使用方法 《很认真的讲讲Caffe》
- Windows下安装MongoDB、MongoVUE、RockMongo
- 关于Android Studio "This version of android studio is incompatible with the gradle version used."的解决方法
- Json结构与封装
- 一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)
- 剑指offer题解C++【11】二进制中1的个数
- 1178: 单词数
- 浅谈UML---类图
- 使用微信支付提供的dll解析json
- Android之仿今日头条标题栏效果
- ndk jni 函数签名
- Python的替换函数——strip(),replace()和re.sub()
- SQL之to_char、lpad、rpad、substr字符串处理
- JAVA中文件类File