这道题,好多都知识都没用过,只是知道,看了答案才知道这么用,基础太差了,打算看看软考书,查缺补漏,大学其实都学了,就是没有好好听,哈哈哈哈哈,大学我真的听了,但是没有悟进去,就是听不明白,大学专业课基本我都没逃过,套的都是心理啊、马克思啊什么的,还念大学,今年6月份看看跟女朋友回哈尔滨去大学溜达溜达,还有中央大街,哈哈哈。
| 其中一个为1,返回1,&都为1,返回1
class Solution {
public int hammingDistance(int x, int y) {
/*相同为0不同为1,
只要统计出1出现的次数,就可以得到汉明距离。
*/
int tag = x ^ y;
int count = 0;
while(tag >0){
/*
& 并运算,0 & 0 = 0,0 & 1 = 0,1 & 1 = 1;
所以tag & 0101,就能得到最后一位是不是1,因为1的二进制0001前面都是0,所以直接忽略
0101中的前三位010,只考虑最后一位1
比如异或结果为0101,
*/
if((tag & 1) == 1) ++count;
tag = tag>>1;
}
return count;
}
}
基础不好,所以我想了好久才想明白,第二个注释才与^运算才是重点。加油,今年要加薪。努力中