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