汇编语言/C51/C语言/C++中左移<<、右移>>的不同

汇编:

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; 当然也可以被重载为其他的操作。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木东居士的专栏

Spark源码解析:DStream

1574
来自专栏Elson的web征途

字符编码的那些事

之前看到ES6中对String扩展了不少新特性,字符串操作更加友好,比如"\u{1f914}",codePointAt(),String.fromCodePoi...

2902
来自专栏pangguoming

不得不知的ES6十大特性

ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率。...

3424
来自专栏生信小驿站

数据处理第3部分:选择行的基本和高级的方法

原文地址:https://suzan.rbind.io/2018/02/dplyr-tutorial-3/ 作者:Suzan Baert 这是系列dplyr...

601
来自专栏Echo is learning

字符、字符集、编码,以及它们python中会遇到的一些问题(上)

1467
来自专栏刘笑江的专栏

通过Swift学函数式编程

在文章SWIFT IS A LOT LIKE SCALA [1] 提到Swift和Scala有很大的相似之处,在某些特性甚至比Scala对函数式编程的支持更友好...

1465
来自专栏草根专栏

使用 C# (.NET Core) 实现模板方法模式 (Template Method Pattern)

本文的概念内容来自深入浅出设计模式一书. 项目需求 有一家咖啡店, 供应咖啡和茶, 它们的工序如下: ? 咖啡: ? 茶: ? 可以看到咖啡和茶的制作工序是差不...

3284
来自专栏跟着阿笨一起玩NET

JSON入门

JSON:JavaScript Object Notation 【JavaScript 对象表示法】

403
来自专栏我杨某人的青春满是悔恨

设计模式之创建型模式

GoF的《设计模式》一书总结了面向对象软件中一些宝贵的设计经验,系统地对它们命名、解释和评价,并以编目分类的形式将它们展现出来,这就是广为流传的23个设计模式的...

1154
来自专栏编程

数控宏程序的编程及应用

1. 什么场合会用到宏程序编程? 其实说起来宏就是用公式来加工零件,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要...

1678

扫码关注云+社区