算术右移
所谓算术右移,就是将补码右移并在空出来的地方填充符号位,这样做的目的就是利用补码的规则实现右移一位等效于数值缩小一倍,比如-3变为-1,-2变为-1,而-1比较特殊,右移还是-1.
逻辑右移
逻辑右移更简单,将补码右移空出来的地方填充0,实现“物理逻辑上”的右移。
标准未定义行为
因为C++并没有规定整型的底层使用补码实现的,所以对带符号的整型右移标准并没有规定执行的是算术右移还是逻辑右移
所谓算术右移,就是将补码右移并在空出来的地方填充符号位,这样做的目的就是利用补码的规则实现右移一位等效于数值缩小一倍,比如-3变为-1,-2变为-1,而-1比较特殊,右移还是-1.
逻辑右移更简单,将补码右移空出来的地方填充0,实现“物理逻辑上”的右移。
因为C++并没有规定整型的底层使用补码实现的,所以对带符号的整型右移标准并没有规定执行的是算术右移还是逻辑右移
本文标题:算术右移还是逻辑右移
本文链接:https://www.haomeiwen.com/subject/nuksxctx.html
网友评论