移位

2019-12-19  本文已影响0人  shelldon1024

        C/C++中的左移是逻辑左移:舍弃最高位,往最低位补零。如果舍弃的最高位是 1,则发生数值溢出。如果没有发生数值溢出,左移效果相当于数值乘 2。

        C/C++中的右移是算术右移:舍弃最低位,往最高位补符号位。不会发生数值溢出,右移效果相当于数值除以 2,直到数值变成-1(或 0)不再改变。

        单次左移或右移操作的实际位数 real 不会超过该数据类型位数 bound,如果程序写的移动位数 fake 超过数据类型位数 bound,则实际移动位数为 real = fake % bound。

上一篇 下一篇

猜你喜欢

热点阅读