循環左移時,用從左邊移出的位填充字的右端,而循環右移時,用從右邊移出的位填充字的左側。這種情況在系統程序中時有使用,在一些控制程序中用得也不少。設有數據說明:
創新互聯建站主營鶴崗網站建設的網絡公司,主營網站建設方案,app軟件定制開發,鶴崗h5重慶小程序開發搭建,鶴崗網站營銷推廣歡迎鶴崗等地區企業咨詢
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
string.h
#define
N
81
void
readwriteDAT();
void
chg(char
*s)
{
int
i,t,j=0,n=strlen(s);/*i循環控制變量,j用于數組中移動元素的位置*/
for
(i=0;i1;i++)/*因為要把最后一個移到最后,所以只需i1即可*/
{
t=s[0];/*把數組中第一個元素先保存給臨時變量t*/
for
(j=0;jn-1;j++)/*下面循環的功能是將除第一個元素外的(即s[0])字符串中的字符循環左移一個位置*/
s[j]=s[j+1];
s[j]=t;/*最后將第一個字符,給最后一個字符*/
}
}
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);
}
注意:本程序如不是在二級C模擬系統下寫代碼,在驗證時請以上面代碼為準!
**************************************************
請輸入一個字符串 : 123abc
向左移動位數 : 2
移動后 : 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("請輸入一個字符串 : ");
gets(s);
printf("向左移動位數 : ");
scanf("%d",m);
movech(s,m);
printf("移動后 : %s\n\n",s);
return 0;
}
網站名稱:C語言函數字符串左移 c語言字符串前移
URL鏈接:http://m.newbst.com/article36/dogodpg.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、云服務器、服務器托管、Google、網站設計公司、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯