剑指offer07--统计二进制数中1的个数

来源:互联网 发布:mac 启动空间已满 编辑:程序博客网 时间:2024/05/17 21:44

题目:输入一个普通的整形数字,将整形数据转换成二进制数,并返回二进制数字中1的个数,比如输入9,那么二进制是1001,返回2

下面使用的是两种方式来实现的,第一种的效率比较低,第二种的效率比较高

package 剑指offer;/*题目:实现一个函数,输入整数,将整数转化成二进制数 *然后求出此二进制数中1的个数,并返回,比如说是9,二进制1001 *其返回的就是2*/public class Test10 {public static void main(String args[]){System.out.println("9的结果是:"+BinaryNamber1(9));System.out.println("9的结果是:"+BinaryNamber2(9));}public static int BinaryNamber1(int num){//这是一种比较常规的方法,每个int型是由4字节32位组成的int result = 0;for(int i = 0; i < 32; i++){if((num&1) != 0)result++;num = num >>> 1;}return result;}public static int BinaryNamber2(int num){//这是一种效率比较高的方式,每次使用减一的方式来消除后边最右边的一个一int result = 0;while(num != 0){result++;num = num&(num - 1);}return result;}}

越努力,越自信

1 0
原创粉丝点击