zoukankan      html  css  js  c++  java
  • 《剑指offer》面试题10 二进制中1的个数 Java版

    书中方法一:对于每一位,用1求与,如果为1表明该位为1。一共要进行32次,int4字节32位。

    	public int check(int a){
    		int result = 0;
    		int judge = 1;
    		int count = 1;
    		//左移31次,一共32位
    		while(count <= 31){
    			if((a & judge) == judge){
    				result ++;
    				judge <<= 1;
    			}
    			count ++;
    		}
    		return result;
    	}
    

    书中方法二:把一个整数减1,再和原来的整数做与运算,会把该整数二进制表示的最右边的一个1变为0

    	public int check2(int a){
    		int result = 0;
    		while(a != 0){
    			a = (a & (a-1));
    			result++;
    		}
    		
    		return result;
    	}
    

    扩展:一个二进制数如果是2的整数次方,那么这个数字的二进制表示中只有一位是1

  • 相关阅读:
    7-4
    7-3
    第五章例5-2
    第五章例5-1
    第四章例4-12
    第四章例4-11
    第四章例4-10
    第四章例4-9
    第四章例4-8
    第四章例4-7
  • 原文地址:https://www.cnblogs.com/czjk/p/11611244.html
Copyright © 2011-2022 走看看