Method 1
直接比较x,y二进制中的每一位,如果不同则cnt加一,并且x,y每次右移一位
class Solution {
public:int hammingDistance(int x, int y) {int cnt = 0;while(x > 0 && y > 0) {if((x & 1) != (y & 1)) cnt++;x >>= 1;y >>= 1;}while(x > 0) {if(x & 1) cnt++;x >>= 1;}while(y > 0) {if(y & 1) cnt++;y >>= 1;}return cnt;}
};
Method 2
使用异或运算,当二进制位相同时为1,不同时为0
class Solution {
public:int hammingDistance(int x, int y) {int cnt = 0;int s = x ^ y;while(s > 0) {cnt += s & 1;s >>= 1;}return cnt;}
};