TheAlgorithms-C/leetcode/src/461.c

12 lines
780 B
C
Raw Normal View History

int hammingDistance(int x, int y){
int difference = x ^ y; //The XOR operator generates the bitwise difference in the binary representation of two numbers
//If bit in ith position of both numbers is same, bit in difference is 0, otherwise 1
int TotalBits = sizeof(difference)*8; //total number of bits
int i, distance = 0;
for(i = 0; i < TotalBits; i++) {
if(difference & (UINT32_C(1) << i)) //if the bit on the ith position of 32 bit input is 1, then proceed
//Further note the use of UINT32_C to convert 1 to unsigned 32 bit int, as just 1 is treated as int which cannot be shifted left more than 30 times
distance += 1;
}
return distance;
}