作业帮 > 综合 > 作业

if((i>>j)&0x01==0)k++什么意思啊?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 05:50:46
if((i>>j)&0x01==0)k++什么意思啊?
if((i>>j)&0x01==0)k++什么意思啊?
假设i=01101100,二进制,j=7,
那么i>>j就是i右移7位,得到临时变量01,(注意这个时候i的值并没有改变)然后 临时变量01再和0x01取并运算,得1,K的值就加1,在这里0x01叫做掩码,
和你见到的网络掩码是一个作用,就是把某个值里面为一的位提取出来.
你贴上的那段代码
extern void _stdcall Init()
{
unsigned char i;
int j,k;
int cTable[256];
cTable[0]=8;
for(i=1;i!=0;i++)
{
k=0;
for(j=0;j>j)&0x01==0) k++;
}cTable[i]==k;
}
}
就是记录每个字节中不为一的bit有多少位,最多保存256个字节的信息.例如:
01101100 、00110011..
两个字节,记在cTable[0],cTable[1]里是4、4,明白了么?