位运算时需要明确知道的事
- 操作数的大小(占用的内存大小)
- 操作数是正数还是负数(符号位,数据表示)
- 不同类型的操作数先自动对齐再进行位运算(补符号位)
对于无符号整数,右侧新增的位将用0填充;而对于有符号整数,这取决于编译器和机器的实现(大多数现代编译器在有符号整数右移时,会在左侧新增的位填充符号位,即正数填充0,负数填充1,这被称为算术右移)。
- 正数符号位为0,右移运算时,高位补0,低位移除
- 负数符号位为1,右移运算时,高位补1,低位移除
- 左移运算时,最高为移除,低位补0
- 最高位的具体位置,由数据类型决定