1 package BitManipulation; 2 //Question 461. Hamming Distance 3 /* 4 The Hamming distance between two integers is the number of positions at which the corresponding bits are different. 5 Given two integers x and y, calculate the Hamming distance. 6 Note: 7 0 ≤ x, y < 231. 8 Example: 9 Input: x = 1, y = 410 Output: 211 Explanation:12 1 (0 0 0 1)13 4 (0 1 0 0)14 ↑ ↑15 The above arrows point to positions where the corresponding bits are different.16 */17 public class hammingDistance461 {18 public static int hammingDistance(int x, int y) {19 int count=0;20 while(x>0|y>0){21 count+=(x&1)^(y&1);22 x=x>>1;23 y=y>>1;24 }25 return count;26 }27 //test28 public static void main(String[] args){29 int x=1;30 int y=4;31 System.out.println(hammingDistance(x,y));32 }33 34 //study the solution of other people35 //example1:use Integer.bitCount36 public static int hammingDistance1(int x, int y) {37 return Integer.bitCount(x ^ y);38 }39 //example2:xor = (xor) & (xor-1)40 //4(100),1(001)->101&100=100->100&011=00041 //1000001001这样中间的0可以一步直接跳过,机智!42 public int hammingDistance2(int x, int y) {43 int count = 0;44 for(int xor = x^y; xor != 0; xor = (xor) & (xor-1)) count++;45 return count;46 }47 }