一、对于有符号数 int
正数,左移直接丢弃最高位,在低位补对应个数的0;
正数,右移直接丢弃最低位,在高位补对应个数的0;
负数,左移直接丢弃最高位,在低位补对应个数的0;
负数,右移直接丢弃最低位,在高位补对应个数的1;
二、对于无符号数 unsigned int
左移直接丢弃最高位,在低位补对应个数的0;
右移直接丢弃最低位,在高位补对应个数的0,即使最高位原来是1;
三、总结
算术右移:最高位填充符号位。正数填充0,负数填充1
逻辑右移:最高位填充0
左移都是补0
参考链接:https://blog.youkuaiyun.com/test1280/article/details/79858715