面试题 05.06. 整数转换
难度简单50收藏分享切换为英文接收动态反馈
整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。
示例1:
输入:A = 29 (或者0b11101), B = 15(或者0b01111)
输出:2
示例2:
输入:A = 1,B = 2
输出:2
提示:
A,B范围在[-2147483648, 2147483647]之间
int convertInteger(int A, int B){
int c =(A^B);
int count = 0;
for(int i = 0;i<32;i++)//考虑符号位
{
if(c&1!=0)
{
count++;
}
c = c>>1;//符号位为一时也要向右移动 这样就越界了
}
return count;
}
异或 0^0=0 0^1=1 1^1=0
与 0&0=0 0&1=0 1&1=0
或 0|0=0 1|0=1 1|1=1
##注意第32位的符号位 小心越界
二进制的运算 熟练掌握