带符号数的移位操作

算数移位时应保持数的符号位不变,数值的大小则要发生变化。左移一位相当于该数乘以2,右移一位相当于该数除以2。

移位运算有算数移位、逻辑移位和循环移位一共3类,每种移位有左移和右移之分。

 

1. 算数移位

算数移位的对象是带符号数,在移位的过程中**必须保持操作数的符号不变**。左移一位时如果不产生溢出,则数值乘以2;右移一位时,

1.1 原码移位规则

不论正数还是负数,在左移或者右移时,符号位均不变,空出的位置一律以“0”补入。

负数的源码移位前后的 结果如下:

左移:移位前有   1 X_1X_2...X_{n-1}X_{n}

           移位后有   1 X_2X_3...X_{n}0           

右移:移位前有   1 X_1X_2...X_{n-1}X_{n}

           移位后有   10X_1...X_{n-2}X_{n-1}

1.2 补码移位规则

(1)正数

符号位不变,不论左移或右移,空出的位置一律以“0”补入

(2)负数

 左移:移位前有   1 X_1X_2...X_{n-1}X_{n}

            移位后有   1 X_2X_3...X_{n}0           

右移: 移位前有   1 X_1X_2...X_{n-1}X_{n}

            移位后有   11X_1X_2...X_{n-2}X_{n-1}

2. 逻辑移位

逻辑移位的对象是无符号数,因此移位时不需要考虑符号问题。

逻辑左移时,高位移丢,低位填“0”;逻辑右移时,低位移丢,高位填“0”

3. 循环移位

循环移位按是否与进位位一起移位又可分为两种:不带进位位的小循环、带进位位的大循环

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值