标签:
题目
如果要将整数A转换为B,需要改变多少个bit位?
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
思路
要考虑负数的问题
如果 一正一负 将他们去全部变成正数 后要+1个符号为的变化
都是负数 只要变成正数进行比较就行了
C++代码
int bitSwapRequired(int a, int b) {
// write your code here
int count = 0;
if((a < 0 && b >= 0) || (a >= 0 && b < 0)) count = 1;
if(a < 0)
{
a += 2147483648;
}
if(b < 0)
{
b += 2147483648;
}
int c = a ^ b;
while(c)
{
if(c % 2 == 1) count++;
c = c >> 1;
}
return count;
}
标签:
原文地址:http://www.cnblogs.com/Smallhui/p/5453611.html