逻辑移位指,右移在高位补0,左移在低位补0。
而算数移位指,左移在低位补0,右移分两种情况
A.最高位为0
此时,右移和逻辑右移一样,高位补0;
B.最高位为1
此时,右移在高位补1;
算数右移 B情况的例子
例如:char Byte = 0x80 ; //对应二进制为10000000;
因为是补码表示,其对应值为-128。
在进行一次 Byte = Byte >>1 后, 其值变成了 0xc0,11000000;
同样,这个表示的值是-64.
其值减半,实现了算数右移。
希望大家使用的时候注意到这一特性,如果要使用逻辑右移的变量,一定要定义为unsigned类型。