一、位运算符号
1. &
按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
其真值表如下 :
| 输入A | 输入B | 输出Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
2. |
按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
其真值表如下 :
| 输入A | 输入B | 输出Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
3. ^
按位异或
若参加运算的两个二进制位值相同则为0,否则为1
其真值表如下 :
| 输入A | 输入B | 输出Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
4. ~
取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1
其真值表如下 :
| 输入A | 输出Y |
|---|---|
| 0 | 1 |
| 1 | 0 |
举例如下:
| 1000101 | 1000101 | 1000101 | 1000101 | ||||
|---|---|---|---|---|---|---|---|
| & | 0101100 | | | 0101110 | ~ | ^ | 0101110 | |
| = | 0000100 | = | 1101111 | = | 0111010 | = | 1101011 |
5.位移运算
左移:<<
用来将一个数的各二进制位全部左移n位,低位以0补充,高位越界后舍弃。
1左移n位: 1 << n=2^n (这里指2的n次方)
n左移1位: n << 1=2*n
右移:>>
将一个数的各二进制位右移N位,移到右端的低位被舍弃,高位以符号位填充
n左移1位 : n >> 1=|n/2.0|
算术右移等于除以2向下取整,(-3)>> 1 = -2 ,3 >> 1 = 1
值得一提的是,“整数/2”在c++中实现为“除以2向零取整”,(-3)/ 2 = -1,3 / 2 = 1
二、常用操作
三、运算符优先级

