一.什么是位运算符
按照二进制位来进行运算的运算符叫做位运算符,所以要先将操作数转换成二进制(补码)的形式在运算。C语言的中的位运算符有:
运算符 | 作用 | 举例 | 结果 |
& | 按位与(and) 0&0=0; 0&1=0; 1&0=0; 1&1=1 同1为1,有0为0 | 1&1 | 1 |
| | 按位或(or) 0|0=0; 0|1=1; 1|0=1; 1&1=1 同0为0,有1为1 | 1|0 | 1 |
^ | 按位异或(xor) 0^0=0; 0^1=1; 1^0=1; 1^1=0 不同为1,相同为0 | 1^1 | 0 |
~ | 按位取反(not) ~1=0; ~0=1 取反 | ~1 | 0 |
<< | 按位左移 各二进制全部左移若干位,高位丢弃,低位补0 | 1<<1 | 10 |
>> | 按位右移 各二进制全部右移若干位,低位丢弃。对正数左补0,负数左补1 | 1>>1 | 01 |
记忆表格:
a | b | a&b | a|b | a^b | ~a |
0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
二.位表达式
用位操作符连接器起来的操作数叫做位表达式。
三.举例
3.1 与(&)运算符
规则:俩个操作数对应的二进制位相同为1,结果位才为1,非则为0
3.2 或(|)运算符
规则:两个操作数对应二进制位同样为0结果位 才为0,否则为1
3.3 取反(~)运算符
规则:每位二进制取反
3.4异或(^)运算符
规则:两个操作数对应二进制位相同则结果位 为0,不同则为1
3.5 左移(<<)运算符
规则:各二进制全部左移若干位,高位丢弃,低位补0
3.5 右移(>>)运算符
各二进制全部右移若干位,低位丢弃。对正数左补0,负数左补1
四.视频教程
37.位运算符_哔哩哔哩_bilibili