面试题 05.06. 整数转换

题目

整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。

示例1:

1
2
输入:A = 29 (或者0b11101), B = 15(或者0b01111)
输出:2

示例2:

1
2
输入:A = 1,B = 2
输出:2

提示:

  1. A,B范围在[-2147483648, 2147483647]之间

解法

解法一:

两值异或,不相同的位值一定是1,计算该值的二进制的1的个数就行

java

1
2
3
4
5
6
7
8
public int convertInteger(int A, int B) {
int x = A ^ B, cnt = 0;
while (x != 0) {
x &= (x - 1);
cnt++;
}
return cnt;
}
0%