int hammingWeight(uint32_t n) { int TotalBits = 32; int i, weight = 0; for(i = 0; i < TotalBits; i++) { if(n & (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 weight += 1; } return weight; }