【追求进步】二进制中1的个数
2016-03-19 10:31
239 查看
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。在线代码:
public class Solution { public int NumberOf1(int n) { //第一种办法 /* int result=0; //int4个字节32位 for(int i=0;i<32;i++){ result+=(n&1); n>>>=1; } return result;*/ //第二种更高效的办法 //统计1的个数 int result=0; // 从最右边的1开始,每一次操作都使n的最右的一个1变成了0, // 即使是符号位也会进行操作。 while(n!=0){ result++; n=(n-1)&n; } return result; } }
相关文章推荐
- Http中的Post和GET请求的区别
- 利用session防止用户未经登录而直接访问
- ElasticsearchIllegalArgumentException[failed to find analyzer [ik]]问题解决
- OpenGL ES 2.0 变换
- OpenGL ES 2.0 摄像机与投影
- codeforces 645 D. Robot Rapping Results Report 二分+拓扑排序
- 一个iOS 框架介绍:MKNetworkKit
- Android 内存泄漏总结
- OpenGL ES 2.0 内置变量
- 第一个Struts2程序
- 浅谈 const 与 define 的区别(PHP)
- UNIX - 标准I/O库
- 部分控件总结
- 朝花夕拾之Oracle11g 表分区
- Android Light开发(一)
- MFC定时器使用(CWnd::SetTimer)
- Java程序StringBuilder的效率,验证字符串操作和字符串生成器的操作效率
- map()函数
- OpenGL ES 2.0 向量
- 网上资源工具