int func(unsigned i)
{
unsigned temp = I;
temp = (temp & 0x55555555) + ((temp & 0xaaaaaaaa) >> 1);
temp = (temp & 0x33333333) + ((temp & 0xcccccccc) >> 2);
temp = (temp & 0x0f0f0f0f) + ((temp & 0xf0f0f0f0) >> 4) ;
temp = (temp & 0xff00ff) + ((temp & 0xff00ff00) >> 8) ;
temp = (temp & 0xffff) + ((temp & 0xffff0000) >> 16) ;
return temp ;
}