定点数的移位运算

一、前言

1. 移位运算的意义(非考点,仅为加强理解):

计算机中还没有乘除法运算电路时,可通过 加法 + 移位 来实现乘除法。

二进制下左移一位(不考虑溢出),相当于×2;右移一位(不考虑精度丢失),相当于÷2。

2. 分类

根据操作数类型的不同,移位运算可以分为 逻辑运算 算术运算

二、逻辑移位

面向操作数类型:无符号整数。

规则:左、右移,都补0。高位的 1 移出时,溢出

三、算术移位

面向操作数类型:有符号整数。需要考虑符号位的问题。

1. 原码 的算术移位

符号位:保持不变。仅对数值位进行移位。

规则:

  • 左移:低位补 0,高位舍弃。 溢出:舍弃位为1
  • 右移:高位补 0,低位舍弃。 丢失精度:舍弃位为 1

2. 反码 的算术移位(了解即可)

(1)正数的反码与原码相同,故其算术移位完全相同(同上)。

(2)负数的反码移位运算与原码相反:

符号位:保持不变。仅对数值位进行移位。

规则:       

  • 左移:低位补 1,高位舍弃。 溢出:舍弃位为0
  • 右移:高位补 1,低位舍弃。 丢失精度:舍弃位为 0 。

       

3. 补码 的算术移位(重点)

(1)正数的补码与原码相同,故其算术移位完全相同(同上)。

(2)负数的补码移位运算:

符号位:参与运算

规则:       

  • 左移:低位补 0,高位舍弃。 溢出:左移前后符号位不同
  • 右移:高位补 符号位,低位舍弃。 丢失精度:舍弃位为 1

四、小结

1.只有补码的算术移位,符号位参与运算。

2.丢失最位,可能丢失精度;丢失最位,可能溢出

3.除了补码右移,高位补符号位外,其余都是补0(不考虑反码的情况。)

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值