【Everyday】(6)将整数A转换为B - Everyday - SegmentFault
如果要将整数A转换为B,需要改变多少个bit位?
如果要将整数A转换为B,需要改变多少个bit位?
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
解题思路
比较其二进制数有多少个不同的位置,首先需要将其转化为二进制数,然后进行统计,这个时候,转化为二进制后,如何判断这个数之前的是否相同,想到了异或操作,异或之后会产生1,然后统计1的个数即为要转化的位置的个数。 public static int bitSwapRequired(int a, int b) {
// write your code here
int tmp = a^b;
int num =0;
while(tmp!=0){
num++;
tmp = tmp&(tmp-1);
}
return num;
}
Read full article from 【Everyday】(6)将整数A转换为B - Everyday - SegmentFault