[CrackCode] 5.5 Determine the number of bits required to convert integer A to integer B

Write a function to determine the number of bits required to convert integer A tointeger B

Input: 31, 14Output: 2 

=========

Analysis:

Basic idea of mine is to compare each digits between A and B, and count the different times.

public class Answer {
	public static int countDiff(int a, int b){
		int count = 0;
		int index = 0;
		if(a<0 || b< 0) return -1;
		
		while(index<32){
			if(((1<<index)&a) != ((1<<index)&b)) count++;
			index++;
		}
		return count;
	}
	
	public static void main(String[] args) {
		int a = 217;
		int b = 532;
		System.out.println(a + ": " + AssortedMethods.toFullBinaryString(a));
		System.out.println(b + ": " + AssortedMethods.toFullBinaryString(b));
		int nbits = countDiff(a, b);
		System.out.println("Required number of bits: " + nbits);
	}
}

Another ides (from the book) is to use XOR between A and B.  Result of which stores all the different digits.  Then we can simply count the '1' digits in the result.

public class Question {
	public static int bitSwapRequired(int a, int b) {
		int count = 0;
		for (int c = a ^ b; c != 0; c = c >> 1) { 
			count += c & 1;
		}
		return count;
	}
	
	public static void main(String[] args) {
		int a = 217;
		int b = 532;
		System.out.println(a + ": " + AssortedMethods.toFullBinaryString(a));
		System.out.println(b + ": " + AssortedMethods.toFullBinaryString(b));
		int nbits = bitSwapRequired(a, b);
		System.out.println("Required number of bits: " + nbits);
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值