二进制中1的个数
2016-02-08 12:38
239 查看
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。一个二进制数,减去1,最右边的1变成0,1后边的0全变成1。比如二进制1100,进去1变成1011。如果再和
原来的数进行与运算,则变成1000,即将末位的1变成0。如此循环知道数值变成0,即可知道二进制数当中包
含多少位1.
public class Solution { public int NumberOf1(int n) { int count=0; while(n!=0){ n=n&(n-1); count++; } return count; } }
相关文章推荐
- YTU 2623: B 抽象类-形状
- Codeforces Round #342 (Div 2) 解题报告
- Codeforces Round #342 (Div 2) 解题报告
- cocos2dx3.0 超级马里奥开发笔记(一)——loadingbar、TableView和pageview的使用
- Two Sigma OA
- IoSkipCurrentIrpStackLocation macro
- 关于主线程中自动建立的Looper的思考:主线程中Looper中的轮询死循环为何没有阻塞主线程
- hdu 1811 Rank of Tetris 拓扑排序+并查集
- 进入tomcat的app manager界面需要配置的tomcat-users.xml
- Leetcode: Reconstruct Itinerary
- 动态规划——三角形问题
- 黄聪:HtmlAgilityPack教程案例
- 黄聪:VS2010每次F5启动都重新编译但是没办法进入断点
- dp 多重背包
- 机器学习系列03——K近邻算法(KNN)
- 来到c语言世界
- PHP 获取指定日期的星期方法如下
- dp 完全背包
- jdbc
- 内存管理--拷贝