新人第一帖,关于C语言循环位移的问题,求大神!
// 把数字两边的各3bit固定,中间的部分进行位移int main(int argc, char *argv[]) {
int a=500; //
int b=3758096391; //mask:"1110...0111"
int i,x,y;
int m=536870912; // "001 00...00 000"
int n=8; // "000 00...01 000"
int p=4; // "000 00...00 100"
x=a&b; // a&mask 把两边固定,中间的部分为0
y=a&(~b); // 元&~mask 把两边的部分固定,取出中间的部分
for(i=1;i<32;i++) // 32回
if(y&n) {y= ((y>>1)&(~p)|m);printf("%d ",x&y);} //1的情况
else{ y=(y>>1); printf("%d ",x&y);} // 0的情况
自己写的代码觉得没有问题,可是问什么结果出来是都是0呢? 求指点!