LintCode :将整数A转换为B
题目
如果要将整数A转换为B,需要改变多少个bit位?
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
思路
将a、b逐位移位与1相与判断a、b的每一位是否相同,不同则count+1。
代码
int bitSwapRequired(int a, int b) {
int count = 0;
for(int i = 0; i < 32; i++)
if(((a >> i) & 1) != ((b >> i) & 1))
count++;
return count;
}