mirror of
https://github.moeyy.xyz/https://github.com/TheAlgorithms/C.git
synced 2023-10-11 15:56:24 +08:00
12 lines
780 B
C
12 lines
780 B
C
|
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;
|
||
|
}
|