C语言 循环移位

Python016

C语言 循环移位,第1张

save=x&0x……那一行,你这是多少个字节了?0x表示16进制,每两个字面字符就是一个字节,即8位,你自己数数你的。取最低为应该是与0x00000001,四个字节,刚好32位。

因为是按8进制输入的,8进制的24换成10进制就是20,换成2进制就是00010100(以1字节表示)。而00010100循环右移2位后就是00000101,即10进制的5,而5按8进制输出(输出格式为%o),就是5。

00010100循环左移2位后是01010000,用10进制表示就是80,而80按8进制输出(输出格式为%o),就是120。

你要移动什么类型的,字符数组嘛?还是? 字符数组可以参考下面这个

void CircleShift(int buffer[],int shift)

{

int i,j,tt

int len=sizeof(buffer)

if(shift==0) return

for(i=0i<abs(shift)i++)

{

if(shift>0)

{

tt = buffer[len-1]

for(j=len-1j>0j--)

buffer[j] = buffer[j-1]

buffer[0] = tt

}

else

{

tt = buffer[0]

for(j=1j<lenj++)

buffer[j] = buffer[j+1]

buffer[len-1] = tt

}

}

}