关于C++里的位移运算

 

左移就是指的是逻辑移位,右端补0,而右移则是算术移位,最高位补符号位,是负数就补1是正数就补0.

正数左移有正有负:

负数左移也是有正有负

右移则稳定保持符号。

所以左移才叫逻辑位移嘛,因为我不管你符号位,移上去一个1就是一个1.

所以右移叫算数位移:你不管怎么移,我始终保持正负号不变。

最后一点,考虑左右移动时的结果应该从补码来考虑,补码移动完成之后,再还原成原码,再换成整数。

 

posted @ 2019-08-27 17:14  Tonarinototoro  阅读(679)  评论(0编辑  收藏  举报