循環(huán)左移時(shí),用從左邊移出的位填充字的右端,而循環(huán)右移時(shí),用從右邊移出的位填充字的左側(cè)。這種情況在系統(tǒng)程序中時(shí)有使用,在一些控制程序中用得也不少。設(shè)有數(shù)據(jù)說(shuō)明:
惠民網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
a=01111011,循環(huán)左移2位 正確結(jié)果: 11101101
過(guò)程:
b=a(8-2) 用來(lái)得到正常左移丟失的位和循環(huán)移位后其正確位置 b=00000001;
a=a2;左移 a=11101100
a=a|b; a=11101101
如果不是用中間變量 a=(a(8-2))|(a2)
總長(zhǎng)度N(8 16 32)
循環(huán)左移n: (a(N-n))|(an)
循環(huán)右移n: (a(N-n))|(an)
C語(yǔ)言的位運(yùn)算功能是其區(qū)別于其他大多數(shù)高級(jí)程序設(shè)計(jì)語(yǔ)言的特色之一,用它可以方便實(shí)現(xiàn)一些特殊功能,靈活掌握是用C程序編寫系統(tǒng)程序的基礎(chǔ)。
擴(kuò)展資料:
C語(yǔ)言高效編程技巧:
一:以空間換時(shí)間
計(jì)算機(jī)程序中最大的矛盾是空間和時(shí)間的矛盾,那么,從這個(gè)角度出發(fā)逆向思維來(lái)考慮程序的效率問(wèn)題
二:數(shù)學(xué)方法解決問(wèn)題
數(shù)學(xué)是計(jì)算機(jī)之母,沒(méi)有數(shù)學(xué)的依據(jù)和基礎(chǔ),就沒(méi)有計(jì)算機(jī)發(fā)展,所以在編寫程序的時(shí)候,采用一些數(shù)學(xué)方法會(huì)對(duì)程序的執(zhí)行效率有數(shù)量級(jí)的提高。
三:使用位操作
實(shí)現(xiàn)高效的C語(yǔ)言編寫的第三招----使用位操作,減少除法和取模的運(yùn)算。
在計(jì)算機(jī)程序中,數(shù)據(jù)的位是可以操作的最小數(shù)據(jù)單位,理論上可以用“位運(yùn)算”來(lái)完成所有的運(yùn)算和操作。一般的位操作是用來(lái)控制硬件的,或者做數(shù)據(jù)變換使用,但是,靈活的位操作可以有效提高程序運(yùn)行的效率。
參考資料來(lái)源:百度百科-c語(yǔ)言程序設(shè)計(jì)
C語(yǔ)言中按位左移的運(yùn)算符為,其規(guī)則如下:
對(duì)于操作an,
1 按照二進(jìn)制值每位向高位(書寫上是向左)移動(dòng)n位;
2 最高位(最左邊的)n位舍去;
3 最低位(最右邊)填加n個(gè)0.
簡(jiǎn)單起見(jiàn),用char型舉例如下:
例一
0x12 3 =
B00010010 3 =
B10010 000(這里最高位的三個(gè)0被舍去,其它依次左移,最低位補(bǔ)三個(gè)0) =
0x90
即0x12 3 = 0x90
例二
0x9E 2 =
B10011110 2 =
B01111000 (最高位10舍去,最低位補(bǔ)兩個(gè)0)=
0x78
可以編寫如下程序驗(yàn)證:
#include?stdio.h
void?check(char?a,?int?n)
{
printf("0x%hhx??%d?=?0x%hhx\n",?a,?n,?an);
}
int?main()
{
check(0x12,?3);
check(0x9e,?2);
return?0;
}
其運(yùn)行結(jié)果為
0x12??3?=?0x90
0x9e??2?=?0x78
可以看到與我們計(jì)算結(jié)果是相符的。
C語(yǔ)言總并沒(méi)有左移函數(shù)和右移函數(shù)。左移和右移是位運(yùn)算符,僅僅適用于整數(shù)型的數(shù)據(jù)。