複製鏈接
請複製以下鏈接發送給好友

循環移位

鎖定
循環移位(英文名稱cyclic shift;end around shift),一種計算機術語。
中文名
循環移位
外文名
cyclic shift;end around shift
專    業
計算機
特    點
定次循環
循環移位
/*----------------------------
將循環右移寫成一個函數rightrot,每次循環右移一位,直到移完n位為止。
在main()函數中輸入a和n,然後調用以上函數。
----------------------------*/
#include
unsignedrightrot(unsigneda,intn)
{
intrb;
while(n-->0)
{
rb=(a&1)>1;
a=a|rb;
}
return(a);
}
main()
{
unsignedrightrot(unsigneda,intn);
unsignedinta,b;
intn;
printf("enteraandn:");
scanf("%x,%x",&a,&n);
printf("a=%x,n=%d\n",a,n);
b=rightrot(a,n);
printf("b=%x\n",b);
}
/*----------------------------------
循環移位
在低級語言中有直接實現循環移位的指令,C語言沒有循環移位的運算符,但可以利用已有的位運算符實現循環移位。
所謂循環移位是指在移位時不丟失移位前原範圍的位,而是將它們作為另一端的補入位。
例如循環右移n位,指各位右移n位,原來的低n位變成高n位,指各位右移n位,原來的低n位變成高n位,可以用以下步驟實現:
(1)使a中各位左移(16-n)位,使右端的n位放到b中的高n位中。其餘各位補0,可用下面語句實現。
b=a>n;
(3)按位“或”具有組合兩個數的某些位的作用,使b與c進行按位“或”運算,
即:c=c|b。
----------------------------------*/
/*------------------------------
#include
main()
{
unsigneda,b,c;
intn;
scanf("a=%x,n=%D",&a,&n);
b=a>n;
c=c|b;
printf("a=%x\nc=%x",a,c);
}
------------------------------*/
//【++程序設計】