C51中左右移运算

汇编:
1.对于51单片机:RLC A;即将累加器ACC中内容左移1位,最低位被CY原始值替代,最高位移入进位标志CY
中,同理还有RRC A。
具体使用:MOV A,#0FFH;
CLR C;
RLC A;
2.对于8086:

(1)左移:SHL/SAL DST CNT 移位时操作数的最低位将移入0,最高位移入CF中,若左移若干位,则CF中只保留最后一次移出的内容。

(2) 右移:分为逻辑右移与算术右移。逻辑右移即SHR,用法与SHL同;算术右移即SAR,移位时操作数的最高位移入的是它原来的值,即最高位保持不变,最低位同样移入CF,主要用于带符号数的右移。

(3)循环移位:ROR/ROL/RCR/RCL DST CNT 类似51的移位指令,不过可以一次操作多位移动。

C51:

1.在C51中操作符为"<<",每执行一次左移指令,操作数最高位移入CY,CY中本来的数丢失,最低位补0,其他位依次向左移动1位。右移指令类同。
2.循环左移:使用C51库函数自带的 unsigned char crol(unsigned char c,unsigned b);实现将字符C循环左移b位,跟8086汇编的循环移位类同,同样右移函数为_cror_;

标准C:

1.">>",C语言中的右移运算,一般情况下是高位补零,但在处理有符号数的时候会因计算机系统的不同而不同。有符号数高位是零,则右移时高位补零;如果是负数即高位是1,那么有的系统会移入1(移动几位就补几个1),称算术右移(大部分系统),有的会移入0,称逻辑右移。
2."<<",C语言中的左移运算,无论是有符号数还是无符号数都是按照逻辑左移来操作,即向左移动若干位,低位补0即可。

C++:

">>“和”<<"运算符如果没有被重载的情况下使用与标准C相同,如果被重载如输入输出流的操作,则变成输入输出操作符,如cout<<xxx; cin>>yyy; 当然也可以被重载为其他的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值