Please Explain Count the number of bits in an int code

I am studying for an interview and I came across an interview that asks to count the number of bits in an int. I have the solution but I do not uderstand either solution. Woul somebody please explain it to me? Thanks

Code:

`int bitcount(int v)`

{

for(int count=0; v; count++, v &= ~(v-1));

return count;

}

int table[] = {0,1,1,2,1,2,2,3, 1,2,2,3,2,3,3,4 };

#define bc(x) table[(x)&0xf ] // maps nibbles to number of bits

int bitcount(int v)

{

// assume 16 bit int

return bc(x) + bc(x>>4) + bc(x>>8) + bc(x>>12);

}