Java求一个整数的二进制中1的个数
来源:互联网 发布:qq播放器官方下载 mac 编辑:程序博客网 时间:2024/05/19 23:15
常规解法。
思路:将整数n与1进行与运算,当整数n最低位是1时,则结果非零,否则结果为0。
然后将1左移一位,继续与n进行与运算,当次低位是1时,结果非零,否则结果为0。
循环以上操作,记录非零的次数即可。
代码如下:
public static int times1(int n ){ int count = 0; int flag = 1; while(flag <= n){ if((n&flag) != 0) count++; flag = flag<<1; } return count; }
优化的解法
思路:
1.对一个整数n,比如10,它的二进制是1010。
2.将10减一变为9,9的二进制是1001.
3.比较10和9的二进制数,对10减一操作就等于将10的二进制的最低位上的1以及后面的位取反,前面的数不变。
总结:把一个整数减去1,再和原整数做与运算,会把该整数最右边1一个1变成0。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。从而可以减少比较的次数。
public static int times2(int n){ int count = 0; while(n!=0){ count++; n = n&(n-1); } return count; }
0 0
- Java求一个整数的二进制中1的个数
- Java求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数(转)
- 求一个整数的二进制中1的个数(转)
- 求一个整数的二进制数中1的个数
- 求一个整数的二进制表示中1的个数
- webpack的基本配置
- 干货 | 教你打造一款颜值逆天的VS Code
- 【一周任务】JMS学习任务20170225
- myeclipse快捷键大全
- Windows SDK 10586 安装图
- Java求一个整数的二进制中1的个数
- Sinc滤波器
- Excel信息提取
- 再谈Android AsyncTask的优缺点
- 2.24 --- 2.25 动态规划专题小测 及 NOIP 2008 模拟 总结
- 【原创亲测】win7下pip默认镜像源的配置
- <? extends T>和<? super T> 的解释
- android传感器
- Android签名生成和Android签名格式转换工具(MD5和SHA1签名)