C++左移右移运算、与运算

移位运算

1. 逻辑移位

逻辑移位:移出去的位丢弃,空缺位(vacant bit)用 0 填充。

2. 算术移位

算术移位:移出去的位丢弃,空缺位(vacant bit)用“符号位”来填充。

3. 举例

  • 对于无符号数,左移右移都是逻辑移位

  • 对于有符号数,左移是逻辑移位,右移是算术移位

具体操作

1. 左移运算符<<

int n = 10;
n = n << 2; // 左移两位

左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化)。

2. 右移运算符>>

  • 有符号整数来说,比如int类型,右移会保持符号位不变。符号位向右移动后,正数的话补0,负数补1。

  • 相当于除以2

posted @ 2021-01-23 17:38  _一只土拨鼠  阅读(650)  评论(0)    收藏  举报