您的位置首页生活小窍门

c语言数组移位操作

c语言数组移位操作

思路:

所有数组都移位,那么其中一个元素的值的溢出位将和相邻的元素进行合并,

因此只要记住上一元素的溢出位,在下一元素移动后合并即可。

#define ELEMCNT 3 //定义数组元素个数

char a[ELEMCNT]; //被操作的元素

char exceedA=0,exceedB=0;//记忆溢出位用的变量,其中exceedA为上一元素溢出值,exceedB为本元素溢出值

//定义整体移动函数,其中k为左移位数

void LeftElem(int k){

  int i;

  char Msk=0;//用于计算溢出位的掩码,如k=6时,其掩码值为00000011(二进制)

  for (i=0;i<8-k;i++){

    Msk=Msk|(1<<i);

  } 

  //移动所有数组元素,i值对应数组元素下标i-1

 余缺 for (i=ELEMCNT;i>0;i--){

    exceedB=(a[i-1]&(~Msk))>>神凯(8-k);//计算溢出游毁唤数据

    a[i-1]=a[i-1]<<k+exceedA;

    exceedA=exceedB;

  }

}