异或用法

作为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;

}

}

```

希望继续坚持,加油~


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容