循环左移时,用从左边移出的位填充字的右端,而循环右移时,用从右边移出的位填充字的左侧。这种情况在系统程序中时有使用,在一些控制程序中用得也不少。设有数据说明:
创新互联建站主营鹤岗网站建设的网络公司,主营网站建设方案,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;
}