请教一个语句怎么理解

请问一个语句如何理解 //....for(i0i8i++){num+(a i)&0x01//如何理解?}//.... [解决办法]将a 右移

请问一个语句如何理解

//....
for   (i   =   0;   i   <   8;   i++)

    {

        num   +=   (a   > >   i)   &0x01;//如何理解?

    }
//....


[解决办法]
将a 右移,然后与0x01位与 ,把结果(只有0,1两种结果)加到num
这样 就算出了a,的低位字节上有多少1(二进制)了
[解决办法]
int n = (a > > i); //右移i位
n &= 0x01; //n是否为奇数
num += n;
[解决办法]
a右移i位后所得的结果,只取其后一位加到num上。