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;
}

461