C语言数组怎么左移?

Python010

C语言数组怎么左移?,第1张

//用一个循环就可以实现数组的循环左移:

int i,n,m//temp表示左移位数

int a[n]

for(i=0i<n-mi++)a[i]=a[i+m]//此时的数组个数为n-m

“ (a[PosOut] <<8) | 0x00ff”表示先把a数组中第PosOut位置的数值按位左移8位,再将得到的结果和0x00ff做逻辑或操作。例如,a[2]=3,用二进制表示是”11“,那么它左移8位得到二进制”11 0000 0000“,再和0x00ff即”1111 1111“做逻辑或操作,得到二进制”11 1111 1111“也就是十进制的1023,即c[2]=1023。

c[0] = (1<<8)|0x00ff = 二进制的"1 0000 0000"和”1111 1111“进行逻辑或 = 二进制的”1 1111 1111“ = 十进制的511。

其他c[PosOut]也是类似的分析。

//下面是将数组左移的函数void fun(char *a, int *length)//length为字符串a的长度{ for(int i = 0i <length - 2i++) { a[i] = a[i+2]}*length = (*length) - 2} //如果只是输出左移两位的结果,可以用下面这个函数void fun(char *a, int length){ for(int i =2i <lengthi++) { printf("%c",a[i]) }}