循環左移時,用從左邊移出的位填充字的右端,而循環右移時,用從右邊移出的位填充字的左側。這種情況在系統程序中時有使用,在一些控制程序中用得也不少。設有數據說明:

成都創新互聯專注于兗州網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供兗州營銷型網站建設,兗州網站制作、兗州網頁設計、兗州網站官網定制、小程序定制開發服務,打造兗州網絡公司原創品牌,更為您提供兗州網站排名全網營銷落地服務。
a=01111011,循環左移2位 正確結果: 11101101
過程:
b=a(8-2) 用來得到正常左移丟失的位和循環移位后其正確位置 b=00000001;
a=a2;左移 a=11101100
a=a|b; a=11101101
如果不是用中間變量 a=(a(8-2))|(a2)
總長度N(8 16 32)
循環左移n: (a(N-n))|(an)
循環右移n: (a(N-n))|(an)
C語言的位運算功能是其區別于其他大多數高級程序設計語言的特色之一,用它可以方便實現一些特殊功能,靈活掌握是用C程序編寫系統程序的基礎。
擴展資料:
C語言高效編程技巧:
一:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那么,從這個角度出發逆向思維來考慮程序的效率問題
二:數學方法解決問題
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,采用一些數學方法會對程序的執行效率有數量級的提高。
三:使用位操作
實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用“位運算”來完成所有的運算和操作。一般的位操作是用來控制硬件的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。
參考資料來源:百度百科-c語言程序設計
#include?stdio.h
#include?math.h
unsigned?fun(unsigned?num,?int?n)
{
if(n??0)
{
//sizeof(unsigned)*8計算變量所占位數,如int型占32位
return?(num??(sizeof(unsigned)*8?-?n))?|?(num??n);?//先高位移動,再低位移動后,兩者按位或,相當把低位溢出的又添加到了高位,實現了循環的效果?
}?
else?
{
return?(num??(sizeof(unsigned)*8?-?abs(n)))?|?(num??abs(n));
}
}
void?main(void)?
{
printf("%u\n",?fun(2,?-34));
}
首先對比一下 左邊與右邊 那里有不同 同時 程序不同對應的輸出結構有哪些不同。。
P2口 連接8個LED 低電平驅動使其發光。
P2=0xfe //上電 P2.0連接的 LED發光。 其余的熄滅。
對比一下程序
void main() //主函數
{
P2=0xfe; //P2初始化
while(1) //死循環
{
num=P2; //這里 與左邊不同 把P2的狀態給 NUM 也就是0XFE num=0xfe
P2=_crol_(num,1); //P2等于num 循環左移 P2=0xef 這時應該是連接的P2.7的LED發光
delay(0);//延遲
}
}
左邊 代碼 NUM 每次大循環 都賦值 num=0xfe 是固定的 所以不管你以后怎么移動 P2口的輸出都是不變得 只移動了一次。。
//#include?"stdafx.h"http://vc++6.0加上這一行.
#include?"stdio.h"
int?main(void){
int?n,m;
unsigned?x=1(sizeof(int)*8-1);
printf("Please?enter?an?octal?integer...\nn=");
scanf("%o",n);
for(x=1,m=0;x;x=2)
(m*=2)+=(xn?||?0);
printf("%o\n",m);
return?0;
}
新聞標題:c語言循環移動函數 c語言循環左移運算符
文章網址:http://www.yijiale78.com/article0/ddjgeoo.html
成都網站建設公司_創新互聯,為您提供網站收錄、Google、App設計、電子商務、移動網站建設、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯