因?yàn)槭前?進(jìn)制輸入的,8進(jìn)制的24換成10進(jìn)制就是20,換成2進(jìn)制就是00010100(以1字節(jié)表示)。而00010100循環(huán)右移2位后就是00000101,即10進(jìn)制的5,而5按8進(jìn)制輸出(輸出格式為%o),就是5。
創(chuàng)新互聯(lián)建站長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為晉江企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站建設(shè),晉江網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
00010100循環(huán)左移2位后是01010000,用10進(jìn)制表示就是80,而80按8進(jìn)制輸出(輸出格式為%o),就是120。
循環(huán)左移時(shí),用從左邊移出的位填充字的右端,而循環(huán)右移時(shí),用從右邊移出的位填充字的左側(cè)。這種情況在系統(tǒng)程序中時(shí)有使用,在一些控制程序中用得也不少。設(shè)有數(shù)據(jù)說明:
a=01111011,循環(huán)左移2位 正確結(jié)果: 11101101
過程:
b=a(8-2) 用來得到正常左移丟失的位和循環(huán)移位后其正確位置 b=00000001;
a=a2;左移 a=11101100
a=a|b; a=11101101
如果不是用中間變量 a=(a(8-2))|(a2)
總長度N(8 16 32)
循環(huán)左移n: (a(N-n))|(an)
循環(huán)右移n: (a(N-n))|(an)
C語言的位運(yùn)算功能是其區(qū)別于其他大多數(shù)高級程序設(shè)計(jì)語言的特色之一,用它可以方便實(shí)現(xiàn)一些特殊功能,靈活掌握是用C程序編寫系統(tǒng)程序的基礎(chǔ)。
擴(kuò)展資料:
C語言高效編程技巧:
一:以空間換時(shí)間
計(jì)算機(jī)程序中最大的矛盾是空間和時(shí)間的矛盾,那么,從這個(gè)角度出發(fā)逆向思維來考慮程序的效率問題
二:數(shù)學(xué)方法解決問題
數(shù)學(xué)是計(jì)算機(jī)之母,沒有數(shù)學(xué)的依據(jù)和基礎(chǔ),就沒有計(jì)算機(jī)發(fā)展,所以在編寫程序的時(shí)候,采用一些數(shù)學(xué)方法會對程序的執(zhí)行效率有數(shù)量級的提高。
三:使用位操作
實(shí)現(xiàn)高效的C語言編寫的第三招----使用位操作,減少除法和取模的運(yùn)算。
在計(jì)算機(jī)程序中,數(shù)據(jù)的位是可以操作的最小數(shù)據(jù)單位,理論上可以用“位運(yùn)算”來完成所有的運(yùn)算和操作。一般的位操作是用來控制硬件的,或者做數(shù)據(jù)變換使用,但是,靈活的位操作可以有效提高程序運(yùn)行的效率。
參考資料來源:百度百科-c語言程序設(shè)計(jì)
#include?stdio.h
#include?math.h
unsigned?fun(unsigned?num,?int?n)
{
if(n??0)
{
//sizeof(unsigned)*8計(jì)算變量所占位數(shù),如int型占32位
return?(num??(sizeof(unsigned)*8?-?n))?|?(num??n);?//先高位移動,再低位移動后,兩者按位或,相當(dāng)把低位溢出的又添加到了高位,實(shí)現(xiàn)了循環(huán)的效果?
}?
else?
{
return?(num??(sizeof(unsigned)*8?-?abs(n)))?|?(num??abs(n));
}
}
void?main(void)?
{
printf("%u\n",?fun(2,?-34));
}
save=x0x……那一行,你這是多少個(gè)字節(jié)了?0x表示16進(jìn)制,每兩個(gè)字面字符就是一個(gè)字節(jié),即8位,你自己數(shù)數(shù)你的。取最低為應(yīng)該是與0x00000001,四個(gè)字節(jié),剛好32位。