关于C++里的位移运算
左移就是指的是逻辑移位,右端补0,而右移则是算术移位,最高位补符号位,是负数就补1是正数就补0.
正数左移有正有负:
负数左移也是有正有负
右移则稳定保持符号。
所以左移才叫逻辑位移嘛,因为我不管你符号位,移上去一个1就是一个1.
所以右移叫算数位移:你不管怎么移,我始终保持正负号不变。
最后一点,考虑左右移动时的结果应该从补码来考虑,补码移动完成之后,再还原成原码,再换成整数。
左移就是指的是逻辑移位,右端补0,而右移则是算术移位,最高位补符号位,是负数就补1是正数就补0.
正数左移有正有负:
负数左移也是有正有负
右移则稳定保持符号。
所以左移才叫逻辑位移嘛,因为我不管你符号位,移上去一个1就是一个1.
所以右移叫算数位移:你不管怎么移,我始终保持正负号不变。
最后一点,考虑左右移动时的结果应该从补码来考虑,补码移动完成之后,再还原成原码,再换成整数。