我是靠谱客的博主 苹果航空,最近开发中收集的这篇文章主要介绍二进制算术移位和逻辑移位运算,及移位运算对数据的影响(详解及过程推导)如何区分二进制的算术移位和逻辑移位运算规则,及移位运算对数据的影响。(详解及过程推导)移位的意义一、怎么区分算术移位和逻辑移位二、算术移位的运算规则三、逻辑移位的运算规则四、算术移位运算对数据的影响,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

如何区分二进制的算术移位和逻辑移位运算规则,及移位运算对数据的影响。(详解及过程推导)

文章目录

  • 如何区分二进制的算术移位和逻辑移位运算规则,及移位运算对数据的影响。(详解及过程推导)
  • 移位的意义
  • 一、怎么区分算术移位和逻辑移位
  • 二、算术移位的运算规则
  • 三、逻辑移位的运算规则
  • 四、算术移位运算对数据的影响


移位的意义

生活中最常见的移位运算就是单位的换算,如1.5m=150cm。如果光看数值而言,1.5该数值小数点右移了两位,数值相应的变为150,相较于前者该数值扩大了一百倍。由生活常识易知,当某个十进制的数值相对于小数点的位置左移了n位,等价于该值被扩大了10n倍。反之,若相对于小数点的位置右移,则等价于该值被缩小了10n倍。同理可得,任意进制的移位意义可类比十进制的移位。


一、怎么区分算术移位和逻辑移位

有符号数的移位称为算术移位无符号数的移位称为逻辑移位

二、算术移位的运算规则

对于正数来说,[X]=[X]=[X]。然而对于负数来说,[X]≠[X]≠[X]。因为有符号数的移位称为算术移位,并且计算机中机器数的字长通常都是固定长度的,那么当某一机器数算术左移n位或右移n位时,然而空余的n位该如何填补呢?


1.无论是正数还是负数,移位后其符号位不变,这是算术移位的重要特点。
2. 当机器数为正数时:

  • 不论左移还是右移,添补的位均为‘0’。

3.当机器数为负数时:

  • 原码:因为负数的原码数值部分与真值相同,故在移位的时候只需保持符号位不变,其余空位均添补‘0’即可。
  • 反码:因为负数的反码与其原码除符号位相同外,其余各个位相反。故在移位时,只需保持符号位不变,其余空位均添补‘1’即可。
  • 补码:通过分析负数的补码,可得出在二进制代码中 权值最低的‘1’ 的左边各位均与反码相对应,右边各位包括该‘1’ 均与原码相对应。故在移位的时候,由于数据左移时,空位出现在低位,则应同原码一样均添补‘0’;由于在右移的时候,空位出现在高位,则应同反码一样均添补‘1’。
真值码值添补值
正数原码、反码、补码‘0’
负数原码‘0’
负数反码‘1’
负数补码左移添‘0’,右移添‘1’

三、逻辑移位的运算规则

由于逻辑位移考虑的数值为无符号数,故在此不需要关心正、负数即原、补、反之间的关系。


左移时,由于高位移丢,故低位补‘0’。右移时,由于低位移丢,故高位补‘0’。

四、算术移位运算对数据的影响

  1. 当真值为正数时,由于[X]=[X]=[X]
  • 左移时若最高位移丢’1‘则将改变真值,导致结果出错。
  • 右移时若最低位移丢’1‘则将改变真值,导致结果出错。
    2.当真值为负数时,由于[X]≠[X]≠[X]
  • 当码制为原码时:左移时,若高位’1‘移丢那么将改变真值,导致结果出错;右移时,若低位’1‘移丢那么将改变真值,因此数据改变,导致结果出错。
  • 当码制为反码时:左移时,若高位’0‘移丢那么将改变真值,导致结果出错;右移时,若低位’0‘移丢那么将改变真值,因此数据改变,导致结果出错。
  • 当码制为补码时:左移时,若高位’0‘移丢那么将改变真值,导致结果出错;右移时,若低位’1‘移丢那么将改变真值,因此数据改变,导致结果出错。

最后

以上就是苹果航空为你收集整理的二进制算术移位和逻辑移位运算,及移位运算对数据的影响(详解及过程推导)如何区分二进制的算术移位和逻辑移位运算规则,及移位运算对数据的影响。(详解及过程推导)移位的意义一、怎么区分算术移位和逻辑移位二、算术移位的运算规则三、逻辑移位的运算规则四、算术移位运算对数据的影响的全部内容,希望文章能够帮你解决二进制算术移位和逻辑移位运算,及移位运算对数据的影响(详解及过程推导)如何区分二进制的算术移位和逻辑移位运算规则,及移位运算对数据的影响。(详解及过程推导)移位的意义一、怎么区分算术移位和逻辑移位二、算术移位的运算规则三、逻辑移位的运算规则四、算术移位运算对数据的影响所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部