位运算符
位运算符作用于整数类型的运算对象,并把运算对象看成是二进制位的集合。位运算符提供检查和设置二进制位的功能,标准库类型 bitset 类也可以表示任意大小的二进制位集合,所以位运算符也能用于 bitset 类。
运算符 | 功能 | 用法 |
---|---|---|
~ | 位求反 | ~ expr |
<< | 左移 | expr1 << expr2 |
>> | 右移 | expr1 >> expr2 |
& | 位与 | expr & expr |
^ | 位异或 | expr ^ expr |
| | 位或 | expr |
一般来说,如果运算对象是“小整型”,则它的值会被自动提升。
位运算对于符号位的处理没有明确规定。
位移运算符
左移运算符(<<)和右移运算符(>>)的内置含义是对其运算对象执行基于二进制位的移动操作,首先令左侧运算对象的内容按照右侧运算对象的要求移动指定位数,然后将经过移动的左侧运算对象的拷贝作为求值结果。其中,右侧运算对象不能为负。
- 左移运算符(<<) 在右侧插入值为 0 的二进制位。
- 右移运算符(>>) 的行为则依赖于其左侧运算对象的类型。(无符号类型:0 | 有符号类型:符号位或 0 )