十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
循環(huán)左移時(shí),用從左邊移出的位填充字的右端,而循環(huán)右移時(shí),用從右邊移出的位填充字的左側(cè)。這種情況在系統(tǒng)程序中時(shí)有使用,在一些控制程序中用得也不少。設(shè)有數(shù)據(jù)說明:
創(chuàng)新互聯(lián)建站主營鶴崗網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),鶴崗h5重慶小程序開發(fā)搭建,鶴崗網(wǎng)站營銷推廣歡迎鶴崗等地區(qū)企業(yè)咨詢
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ù)高級(jí)程序設(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é)方法會(huì)對程序的執(zhí)行效率有數(shù)量級(jí)的提高。
三:使用位操作
實(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
string.h
#define
N
81
void
readwriteDAT();
void
chg(char
*s)
{
int
i,t,j=0,n=strlen(s);/*i循環(huán)控制變量,j用于數(shù)組中移動(dòng)元素的位置*/
for
(i=0;i1;i++)/*因?yàn)橐炎詈笠粋€(gè)移到最后,所以只需i1即可*/
{
t=s[0];/*把數(shù)組中第一個(gè)元素先保存給臨時(shí)變量t*/
for
(j=0;jn-1;j++)/*下面循環(huán)的功能是將除第一個(gè)元素外的(即s[0])字符串中的字符循環(huán)左移一個(gè)位置*/
s[j]=s[j+1];
s[j]=t;/*最后將第一個(gè)字符,給最后一個(gè)字符*/
}
}
main()
{
char
a[
N
]
;
printf("Enter
a
string
:
");
gets(a);
printf("The
original
string
is
:
");
puts(a);
chg(a);
printf("The
string
after
modified
:
");
puts(a);
}
注意:本程序如不是在二級(jí)C模擬系統(tǒng)下寫代碼,在驗(yàn)證時(shí)請以上面代碼為準(zhǔn)!
**************************************************
請輸入一個(gè)字符串 : 123abc
向左移動(dòng)位數(shù) : 2
移動(dòng)后 : 3abc12
Press any key to continue
************************************************
#include stdio.h
int mystrlen(char *s) {
int len = 0;
char *p = s;
while(*p++) len++;
return len;
}
void movech(char *s,int m) {
int i,len;
char ch;
len = mystrlen(s);
while(m--) {
ch = *s;
for(i = 1;i len;i++) s[i - 1] = s[i];
s[len - 1] = ch;
}
}
int main() {
char s[1024];
int m;
printf("請輸入一個(gè)字符串 : ");
gets(s);
printf("向左移動(dòng)位數(shù) : ");
scanf("%d",m);
movech(s,m);
printf("移動(dòng)后 : %s\n\n",s);
return 0;
}