算数移位运算
注意:算数移位的运算是指数的移动,不是小数点的移动
原码的算数右移
原码的算数右移:高位补0,低位舍弃;如果舍弃的是0,则表示除以2,如果舍弃的是1,则丢失精度。
原码的算数左移
原码的左移: 高位舍弃,低位补0;如果舍弃是0,则表示乘2,舍弃的是1,则会严重丢失精度
上图原码是-20,左移后:-20 -> -40 -> -80 -> -32
反码的算术移位运算
正数反码的移位与原码的一样,可以参考上面的哈
负数的反码移位运算:因为反码和原码的恰好相反,所以左移和右移的方式也相反
右移:高位补1,低位舍弃 左移:低位补1,高位舍弃
补码的算术移位运算
正数不摆了,还是跟原码的一样
负数的补码一位有点意思,由于补码是原码取反加一得到的,所以从低位往高位,数到第一个0,可以发现前面的和反码一样,后面的和原码一样,大家不懂可以看图
那么右移时和负数反码的方法一致:高位补1,低位舍弃;左移时和原码一样:低位补0,高位舍弃
逻辑移位
逻辑移位的规则很简单:左移:低位补0,高位舍弃;右移:高位补0,低位舍弃。