楼主 C=SS都是笔误?
是不是C=ASS啊
你的5678太大了
化成二进制太长 我假设ass=9,
那么ass=(1001)bin
,基本知识 你必须掌握一些 bin代表进制
我讲一下第一次循环的内容:while(ass)这种写法大概理解为 ass!=空的时候就执行循环
{
c=ass&1
意思是ass数值二进制形式最后一位(0)和1相与(其实就是0+1)然后得到的新数值赋值给此时C=1010
数组a[]从a0开始填入C的值1010,由于角标i++从0加了1
下一个循环就是a[0+1]=a1被写入c的值了
ASS >>=1意思是 ass数值 向右移位高位补充0,比如ass=1001 移位1后是0100,把这个值重新赋值ASS。保证ass也变化了。可以理解成先 a>>1,然后 新a=a
然后进入下一次循环
发现while(ass)依然成立
由于是循环 a0 a1 a2
之类的会不断被填入上一步运算出来的新的C值
我其实很不习惯while(ass)这种形式
也不好理解判断ass哪个属性 循环才进行下去。
请指正