循環(huán)移位就是把數(shù)值變成二進制,然后循環(huán)移動的過程。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了城固免費建站歡迎大家使用!
換句話說,循環(huán)移位就是將移出的低位放到該數(shù)的高位(循環(huán)右移)或把移出的高位放到該數(shù)的低位(循環(huán)左移),左移,和右移動都是對整數(shù)進行的操作,在Win32控制臺應用程序中,整形占4Byte節(jié)32bit。
循環(huán)左移的過程可以分為3步:
1、將x左端的n位先移動到y(tǒng)的低n位中,x(32-n);
2、將x左移n位,其右面低位補0,xn;
3、進行按位或運算(x (32 - n) | (x n));
循環(huán)右移的過程可以分為3步:?
1、將x的左端的低n位先移動到y(tǒng)的高n位中x(32-n)
2、將x右移n位,其左面高n位補0xn;
3、進行按位或操作(x (32 - n) | (x n));
擴展資料
C語言實現(xiàn)循環(huán)移位:循環(huán)移位是對二進制序列進行操作,所以實現(xiàn)循環(huán)移位先需要將需要移位的數(shù)轉(zhuǎn)換為二進制序列,然后按照上面描述的步驟進行移位,最后將移位后的二進制序列打印出來。
所謂循環(huán)移位是指在移位時不丟失移位前原范圍的位,而是將它們作為另一端的補入位。例如循環(huán)右移n位,指各位右移n位,原來的低n位變成高n位,指各位右移n位,原來的低n位變成高n位。
用到循環(huán)移位的操作時,在匯編里面是比較容易實現(xiàn)的,ror,rol指令就行了。利用位運算進行循環(huán)移位操作比較容易理解。如果不是循環(huán)移位,使用xn(左移n位),xn右移n位。
參考資料來源:百度百科—循環(huán)移位運算
默認只有算術(shù)右移。 要循環(huán)右移需要把最低位保存下來, 然后賦值到最左。
unsigned?int?func(unsigned?int?n)
{
unsigned?int?v=n1;
n=1;
if(v)?n|=1(sizeof(unsigned?int)-1);
return?n;
}
函數(shù)功能:將輸入字符串 src循環(huán)右移n位 result為輸出結(jié)果
要求:以效率最高的方式實現(xiàn)
示例:
“abcde” --2-- "deabc"
"abcde"--8--"cdeab"
void right_shift_r(const char* src,char* result,unsigned int n)
{
? ? unsigned int len = strlen(src);
int i=0;
? ? for(i=0;ilen;i++)
{
? ? ? ? ? ? result[i] = src[i+n]%len;?
}
}
unsigned char crol(unsigned char c,unsigned b)
{ //左移
unsigned char left;left=cb;
unsigned char right;right=c( sizeof (unsigned char )-b) ;
return left|right;
}
unsigned char cror(unsigned char c,unsigned b)
{ //右移
unsigned char right;
right =cb;
unsigned char left ;
left=c( sizeof (unsigned char )-b) ;
return left|right;
}
新聞標題:c語言中的循環(huán)右移函數(shù),C語言循環(huán)左移
網(wǎng)站路徑:http://jinyejixie.com/article46/dssophg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、全網(wǎng)營銷推廣、軟件開發(fā)、云服務器、外貿(mào)網(wǎng)站建設(shè)、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)