算术移位和逻辑移位

1.逻辑移位

逻辑移位是对无符号数进行的,左移和右移都是补零

例如:0101

左移1位:1010

右移1位:0010

2.算术移位

算术移位是对有符号数进行的,符号位不变,对数值位进行移动。移位的规则如下:

真值码制移动方式
正数原码,反码,补码左移和右移都加0
负数原码左移和右移都加0
负数补码左移加0
负数补码右移加1
负数反码左移和右移都加1

例如:

正数    0,0110(+6)

左移1位:0,1100

左移2位:0,1000

右移1位:0,0011

右移2位:0,0001

负数    1,0110(-6原码)

左移1位:1,1100

左移2位:1,1000

右移1位:1,0011

右移2位:1,0001

负数    1,1010(-6补码)

左移1位:1,0100

左移2位:1,1000

右移1位:1,1101

右移2位:1,1110

负数    1,1001(-6反码)

左移1位:1,0011

左移2位:1,0111

右移1位:1,1100

右移2位:1,1110

3.对网上其他说法的说明

网上说逻辑左移和算术左移一样都是低位补零,逻辑右移高位补0,算术右移高位补和符号位一样的数字,这种说法是针对补码而言的。实际上由于计算机中所有数字都是以补码的形式存在,在设计cpu时设计的移位运算也是针对补码进行的,所以网上的说法是没错的。在考试做题时要分清是原码,补码,反码,负数对这三种机器数的算术移位操作是不同的,尽管实际设计硬件只实现了补码的算术移位。个人建议按正数和负数分别记忆。

  • 71
    点赞
  • 340
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值