题目: 给定两个正整数(二进制表示形式)A和B,把A变为B需要改变多少位(bit)?也就是说,A,B的二进制表示形式中有多少位是不同的?
思路:(1) C=A&B;A和B相与得到的C,C中的1代表该位A,B都为1;
(2)D = A||B;D中的0代表该位A,B都为0;
(3)E = A^B;E中的1代表该位A,B不同;
所以最终就统计E中1的个数即可,利用按位与统计
public int diff(int A,int B){
int C = A&B;
int D = A||B;
int E = A^B;
int sum = 0;
int flag = 0;
while(E){
if(E&flag == 1){
sum++;
}
E>>1;
}
}