异或用法

2016-12-19  本文已影响0人  忆小芝

作为leetcode入门的第一题,461,做如下总结,对于异或和二进制一直用的很不熟悉,学的也非常不扎实,所以做题时并不轻松。

计算机世界是二进制世界,所以所有数字都是以二进制储存的,不需要额外转换。

X^Y的意义是当x和y都化成二进制数时,将其每一位一一对应,相同为1,不同为0.其结果是对应后的二进制数的十进制形式。

而二进制数字缩位的方法是将其十进制形式除以2.(当其是2的倍数时,如不是需要减1)

将问题转换为求一个二进制数有多少个1时,问题会变得简单一些。即十进制数与2mod,如果余数为1,说明最后一位为1,计算器进行+1运算,然后将其-1,除以2,进行缩位运算。

```

public class Solution {

public int hammingDistance(int x, int y) {

int res =x^y;

int cnt=0;

for(int i=0;i<31;i++){

if(res%2==1){

cnt=cnt+1;

res=(res-1)/2;

}

else{

res=res/2;

}

}

return cnt;

}

}

```

希望继续坚持,加油~


上一篇下一篇

猜你喜欢

热点阅读