位异或运算(^)
运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
比如:8^11.
8转为二进制是1000,11转为二进制是1011.从高位开始比较得到的是:0011.然后二进制转为十进制,就是Integer.parseInt(“0011”,2)=3;
就是二进制下相同位的数不同就+1
我就按照最简单的逻辑写了,没优化
class Solution {public int hammingDistance(int x, int y) {int num = x ^ y;int res = 0;int remainder = 0;while(num != 0){if(num == 1){res++;break;}remainder = num % 2;num = num / 2;if(remainder == 1) res++;}return res;}
}