方法一

思路:

  1. 使用异或获得两个数不同二进制数代表的十进制数
  2. 然后统计这个十进制数的二进制位上1的数目

    1. func hammingDistance(x int, y int) int {
    2. count := 0
    3. //首先进行异或,
    4. temp := x^y
    5. for temp != 0 {
    6. temp &= (temp - 1)
    7. count++
    8. }
    9. return count
    10. }
    class Solution {
    public:
     int hammingDistance(int x, int y) {
         //获取两个数字异或之后的结果
         int xorRet = x ^ y;
         //计算异或结果的二进制1的数目
         int count = 0;
         while(xorRet != 0)
         {
             count++;
             //去掉二进制中最后的1位1
             xorRet &= (xorRet - 1);
         }
         //返回最终的结果
         return count;
     }
    };