forked from TheAlgorithms/C
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path461.c
12 lines (12 loc) · 780 Bytes
/
461.c
1
2
3
4
5
6
7
8
9
10
11
12
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;
}