求二进制中1的个数----Java实现
来源:互联网 发布:windows mail在哪 编辑:程序博客网 时间:2024/05/16 15:34
问题描述:给出一个整数,输出这个整数的二进制表示中1的个数。
算法思路1:(移位)第一步:判断二进制表示中最后一位是不是1,如果是1,计数器加1,否则不加;第二部:丢掉最后一位,继续递归第一步,直到这个数等于0,返回计数结果。(正数情况下)
package com.study;public class Test {public static void countOneFreq(int n){int count = 0;while(n>0){if((n&1)==1) //判断最后一位是不是1 count++;//如果是1,计数器加1n>>=1;//向右移位}//当n==0,end while System.out.print(count);}public static void main(String[] args) {countOneFreq(7);}}输出结果"3
算法评价:算法的复杂度为O(n),其中n表示二进制数的位数
算法思路2:n&(n-1)由于要求出1的个数,把二进制表示中的每个1看成独立的。例如7位111,那么7-1=110,7&(7-1)=110。(正数情况下)
package com.study;public class Test {public static void countOneFreq(int n){int count = 0;while(n>0){if(n!=0) //如果还存在1 n=n&(n-1);//消除一个1count++;//每消除一个1就计数一次}//当n==0,end while System.out.print(count);}public static void main(String[] args) {countOneFreq(8);}}
输出结果为1
算法评价:这个算法的复杂度为O(m),其中m是1的个数。
算法思路3:考虑正数和负数
1的二进制:00000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
补码(反码+1):
11111111 11111111 11111111 11111111
∵:-1 的二进制即 1 的二进制补码
∴:-1 的二进制为:
11111111 11111111 11111111 11111111
package com.study;public class Test {public static void countOneFreq(int n){int count = 0;while(n!=0){//当二进制存在1<pre name="code" class="java">n=n&(n-1);//消除一个1count++;//计数器加1}//当n==0,end while System.out.print(count);}public static void main(String[] args) {countOneFreq(-1);}}
输出结果:32
算法评价:这个算法的复杂度为O(m),其中m是1的个数。 0 0
- 求二进制数中1的个数--Java实现
- 求二进制中1的个数----Java实现
- Java实现二进制中1的个数
- Java 实现二进制中1的个数
- 二进制中1的个数Java实现
- Java实现求一个整数的二进制数中1的个数
- Java求一个整数的二进制中1的个数
- Java求一个整数的二进制中1的个数
- 求二进制中1的个数《编程之美》java(jdk1.6)实现
- 6 种 求二进制数中1的个数 算法 java 实现
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制数中1的个数
- 求二进制中1的个数
- easyui datetimebox 如何只显示 月份,不显示具体的数据
- modbus 协议(1)
- view事件传递
- ubuntu16.04使用手札(二)——分区管理
- D触发器二分频电路
- 求二进制中1的个数----Java实现
- MFC中Spin control的使用
- 剑指offer(二十一)之和为S的两个数字
- Android Log统一管理类
- MIPI2---- DBI\DPI\DSI简介
- figure元素
- 多线程异常 和 事务(一)
- Android JNI: Can't include C++ headers like vector or string...
- Oracle SQL日期比较和常用日期函数