更新于20200715:
逻辑移位和算术移位不同,否则汇编指令就保留一个就行了,干嘛还保留2个呢?
因此:
逻辑移位主要用于无符号数的移位,左移和右移均是移丢一位+空位补0
算术移位主要用于有符号数的移位运算,移位操作时,无论是正数还是负数,无论是原码,反码,补码,均不能改变符号位的位置和值
算术移位分正数的原码,反码,补码的左移和右移,负数的原码,反码,补码的左移和右移
其中正数的原码,反码,补码完全一样,所以左移和右移时,符号位不变,数值的最高位或最低位移丢,空出的位补0;
负数的原码,左移:符号位不变,数值最高位移丢,最低位补0;右移:符号位不变,数值最低位移丢,最高位补0,
负数的反码,左移:符号位不变,数值最高位移丢,最低位补1;右移:符号位不变,数值最低位移丢,最高位补1,
负数的补码,左移:符号位不变,数值最高位移丢,最低位补0;右移:符号位不变,数值最低位移丢,最高位补1。

第一种观点:
逻辑左移=算术左移,右边统一填0 ,最高位移入cf

逻辑右移,左边统一添0 ,最低位移入cf

特殊:算数右移,左边添加的数和符号位有关,最低位移入cf

e.g:1010101010,其中[]是添加的位逻辑左移一位:010101010[0]算数左移一位:010101010[0]逻辑右移一位:[0]101010101算数右移一位:[1]101010101

算术右移的2种实现方式(结果是相同的):
1.符号位不变,数值位右移,最低位移入cf,最高位数值位填符号位的值(1或0);
2.符号位和数值位无差别右移,最低位移入cf,最高位填符号位的值(1或0)。

第二种观点:

算术移位时符号位(最高位)不变
左移时最高数值位移进cf,最低位填0;
右移时最低数值位移进cf,最高数值位填符号位的值(1或0);

逻辑移位时没有符号位:
左移时最高位移进cf,最低位填0;
右移时最低位移进cf,最高位填0;
例如

10101110逻辑右移一位得01010111逻辑左移一位得01011100。
若将其视为补码则算术左移一位得11011100算术右移一位得11010111。
可见两种移位结果不同。

以上属于转载别人观点,个人暂更倾向于第二种观点

逻辑左移、逻辑右移、算术左移、算术右移区别相关推荐

  1. 【Java】位运算符---算术右移和逻辑右移、算术左移和逻辑左移

    文章目录 1. 算术左移和逻辑左移 2. 算术右移和逻辑右移 3. Java中<<.>>和>>>的含义 1. 算术左移和逻辑左移 对于有符号数或无符号数:算术 ...

  2. 算术左移、算术右移、逻辑右移

    首先说明一点,本文所有的操作都是针对存储在计算机中中二进制的操作,正数在计算机中是用二进制表示的,负数在计算机中使用补码表示的. 算术左移(<<):有符号的移位操作:该操作时将运算数的二进 ...

  3. 算术左移,逻辑左移,算术右移,逻辑右移之间的区别

    1.算术左移,逻辑左移: 都是在右边补0: 比如 00101011 算术左移一位:01010110 逻辑左移一位:01010110 对于二进制的数值来说左移n位等于原来的数值乘以2的n次方 比如000 ...

  4. 逻辑左移、算术左移、逻辑右移、算术右移

    汇编指令: (注意,所有移位指令,被移出去的那个位上的值,会被赋值给CF标志位) 逻辑左移:SHL(右边补0) 算术左移:SAL(1.寄存器中自动转换成SHL,左移不存在算术左移,所有左移都是SHL: ...

  5. java的算术右移(>>)、算术左移(<<)及逻辑右移(>>>,无符号移位)

    特别注意 特别注意:计算机运算是采用补码计算的.最后输出结果是运算结果后补码的原码. 本文所有的操作都是针对存储在计算机中中二进制的操作,正数在计算机中是用二进制表示的,负数在计算机中使用补码表示的. ...

  6. 算术左移,算术右移;逻辑左移,逻辑右移

    1.算术左移.逻辑左移 算术左移和逻辑左移一样都是右边补0 [例] 00101011 算术左移一位:01010110 逻辑左移一位:0101011 二进制数值,左移n位等于原来的数值乘以2的n次方 [ ...

  7. 逻辑左移,逻辑右移,算术左移,算术右移的区分

    逻辑左移(SHL)和算数左移(SAL),规则相同,右边统一添0    逻辑右移(SHR),左边统一添0     算数右移(SAR),左边添加的数和符号有关 (正数补0,负数补1)   比如一个有符号位 ...

  8. 逻辑左移、逻辑右移、算术左移、算术右移、循环左移、循环右移

    逻辑左移时,最高位丢失,最低位补0: 逻辑右移时,最高位补0,最低位丢失: 算术左移时,依次左移一位,尾部补0,最高的符号位保持不变. 算术右移时,依次右移一位,尾部丢失,符号位右移后,原位置上复制一 ...

  9. 算术右移(right arithmetic shift)逻辑右移(right logical shift)算术左移和逻辑左移(left logical shift)

    算术右移:数字向右移动,左边补符号位.Windows中支持的函数为:Int64ShraMod32 逻辑右移:数字向右移动,左边补0.Windows中支持的函数为:Int64ShrlMod32 算术左移 ...

最新文章

  1. 综述|核心开发者全面解读Pytorch内部机制
  2. Python中常用的一些操作总结(未完待续)update @ 2017-5-18
  3. 两台路由器之间建立邻接关系的过程即报文信息交换过程
  4. Windows 内核数据结构学习总结
  5. wireshark相关协议详解和nc命令建立对话
  6. qml中loader加载页面会闪屏_Qml动态语言切换
  7. C#字符串:转数组、数字
  8. Java防止Xss注入json_每日一题(java篇) 如何防止xss注入
  9. HA机制的大数据集群的搭建过程
  10. 3月2日,阿里云开源 PolarDB 企业级架构即将发布
  11. 操作系统原理 —— 操作系统概述
  12. 使用Idea简单搭建springcloud项目
  13. 简单查询(1.普通查询2.条件查询3.模糊查询4.排序查询5.统计查询(聚合函数)6.分组查询7.分页查询)...
  14. poj 2240 Arbitrage floyd基础,字符串输入有点麻烦
  15. Windows中使用Netsh Winsock Reset命令解决网络连接问题
  16. hl3150cdn废粉仓清零_常见施乐联想兄弟等打印机加粉清零(废粉仓清零)方法
  17. 计算机怎么禁止远程桌面,win7怎样禁用远程桌面共享_win7系统禁用远程桌面共享的步骤-系统城...
  18. React 移动端`1px`像素边框
  19. MyBatis核心流程三大阶段之数据读写阶段
  20. 逆水寒2021最新服务器,【图片】《逆水寒》2021年4月29日更新公告【逆水寒ol吧】_百度贴吧...

热门文章

  1. 安装 arm nginx aarch64
  2. 腾讯QQ的验证码,很黄很暴力
  3. 奇偶页不同页眉页脚设置
  4. 安装的计算机语言不受支持,win10提示安装程序包的语言不受系统支持解决方案...
  5. MTK 智能机平台系统文件夹文件详解
  6. 把java项目打包成安装包
  7. linux命令之-dmesg详解
  8. Ubuntu 经验 :软件安装 :安装.AppImage文件
  9. python是汇编语言吗-汇编语言最新资讯
  10. 单身程序员的福利!快来加入全国最大的硕博交友群,手慢无!