运算
移位运算
算数移位
原码的算数右移/左移:
符号位保持不变,只对数值位进行移位。
右移后高位补零,低位舍弃。左移也是一样的
右移一位相当于除2,左移一位相当于乘2
如果舍弃的位不是0,那么就会丢失精度/严重误差,例如101右移变成10,5÷2变成2,精度丢失。而120左移就会超出最大的范围127,就会出现严重的误差。
反码的算数移位:
正数的反码的算术移位和原码的算数移位是相同的。负数的算数移位补的数是1而不是0
补码的算数移位:
正数的补码的算数移位和原码的算数移位是相同的。负数的补码的移位:最右边的1及其右边保持与原码相同,最右边的1的左边保持与反码相同。右移高位补1(按照反码的规矩),左移低位补0(按照原码的规矩)。
算数移位总结: