package com.thinker.test.test5;

public class Test_5_5{
	
	/**
	 *	
	 * 题目：
	 *		编写一个函数确定需要改变的几位，才能将整数A转为整数B。
	 *
	 **/
	public static void main(String[] args){
		System.out.println("a = 2,b = 3:\t"+go(2,3));
		System.out.println(extend(3));
	}
	public static int go(int a, int b){
		int count = 0;
		for(int c = a^b;c != 0;c = c & (c-1)){
			count ++;
		}
		return count;
	}
	/**
	 *
	 *	判断某个整数的二进制表示中有几个1 。
	 *
	 **/
	public static int extend(int n){
		int count = 0;
		while(true){
			if(n == 0){
				break;
			}
			n = n & (n-1);
			count ++;
		}
		return count;
	}
}
