简介:c语言中的位运算符等的操作都比较冷门,这儿将逐个分析一下,彻底搞清楚其运算方法。
C语言中的位运算符
**& 位逻辑与
| 位逻辑或
^ 位逻辑异或
~ 位逻辑反
>> 右移
<< 左移**
将以下示例分析
假设有定义 uint8_t a = 3, b =5;
则
a&b = 1;
a|b = 7;
a^b = 6;
~a = 0b1111 1100 ;
a>>1 = 1;
b<<2 = 20;
因为是位运算,故将a 与 b 转换为二进制:
a = 3 == 00000011
b = 5 == 00000101
& 位逻辑与
逻辑 &:运算规则:位上一假结果就为假,都为真结果才为真
00000001 == 1
| 位逻辑或
逻辑 | :运算规则:位上一真结果就为真,都为假结果才为假
00000111 == 7
^ 位逻辑异或
逻辑 ^ :运算规则:位不同结果为真,位相同结果为假
00000110 == 6
~ 位逻辑反
逻辑 ~ :运算规则:按位取反
>> 右移
逻辑>> :运算规则:右边移出存储单元,左边空出补0
例如:a>>1 = 1
00000001 == 1
<< 左移
逻辑<< :运算规则:左边移出存储单元,右边空出补0
例如:b<<2 = 20
00010100 == 20