重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C语言中左移表示左移运算符,就是把最高位丢弃掉然后在最低位补0;而C语言中的右移就是右移运算法,与左移是相反的,它是往右边挪动若干位。
创新互联建站服务项目包括特克斯网站建设、特克斯网站制作、特克斯网页制作以及特克斯网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,特克斯网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到特克斯省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
代码文本:
#include "stdio.h"
int myfun(int m,int n){//十进制循环右移
int tmp,i;
for(tmp=m,i=0;tmp;i++,tmp/=10);
if((n%=i)0) n+=i;
for(tmp=i-n,i=1;tmp;i*=10,tmp--);
for(tmp=n,n=1;tmp;n*=10,tmp--);
return m%n*i+m/n;
}
int main(int argc,char *argv[]){
int n,m;
printf("Please enter n m(int 0n,m1000000000)...\n");
scanf("%d%d",n,m);
printf("你输入的数是: %d\n",n);
printf("右移%d位后是: %d\n",m,myfun(n,m));
return 0;
}
C语言总并没有左移函数和右移函数。左移和右移是位运算符,仅仅适用于整数型的数据。
0111右移一位是把最后一位的1去掉,左边补个0,得0011,转换为十进制是3,这是正确的。并不等同于除以2
左移比较简单,右边补0(移几位就补几个0),左边丢掉。
右移比较复杂,右移分两种:
(1)逻辑右移,左边补0(移几位补几位),右边移出去的丢掉。
(2)算术右移,左边补最高位(即原来的最高位是0就补0,是1就补1,因为最高位代表符号,这样可以保证负数不会变成正数),右边丢掉。
是2进制右移,相反的还有是2进制左移。
举例如下,如果一个变量
int
x=5;
则x的2进制表示为:
0000000000000101
执行x1代表x右移一位,就是上面这一串整体右移,末位淘汰,高位补0
于是x变成了
0000000000000010
也就是x变成了2
左移相反,高位淘汰,末位补0
你的那种x[i][j]+=4是不行的,没有这种运算符。