运算符 | 名称 | 示例 |
---|---|---|
& | 位与 | a && b |
| | 位或 | a | b |
^ | 位异或 | a ^ b |
~ | 位取反 | ~a |
<< | 二进制左移 | a << 2 |
>> | 二进制右移 | a >> 2 |
位与运算符用符号 &
表示。
如果两个操作数的对应位都为1,则位与运算的结果为1,否则结果为0
示例代码
#include
int main() {
int a = 13; //二进制表示为0b1101
int b = 11; //二进制表示为0b1011
int c = a & b;
printf("%d\n", c); //输出结果为9,二进制表示为0b1001
return 0;
}
位或运算符用符号 |
表示。
如果两个操作数的对应位中至少有一个为1,则位或运算的结果为1,否则结果为0。
示例代码
#include
int main() {
int a = 13; //二进制表示为0b1101
int b = 11; //二进制表示为0b1011
int c = a | b;
printf("%d\n", c); //输出结果为15,二进制表示为0b1111
return 0;
}
位异或运算符用符号 ^
表示
如果两个操作数的对应位不同,则位异或运算的结果为1,否则结果为0
示例代码
#include
int main() {
int a = 13; //二进制表示为0b1101
int b = 11; //二进制表示为0b1011
int c = a ^ b;
printf("%d\n", c); //输出结果为6,二进制表示为0b0110
return 0;
}
位取反运算符用符号 ~
表示
它会对操作数的每个二进制位取反,即0变成1,1变成0
示例代码
#include
int main() {
int a = 13; //二进制表示为0b1101
int b = ~a;
printf("%d\n", b); //输出结果为-14,二进制表示为0b11111111111111111111111111110010
return 0;
}
左移运算符用符号 <<
表示
它将操作数的所有二进制位向左移动指定的位数,并在低位填充0
示例代码
#include
int main() {
int a = 13; //二进制表示为0b1101
int b = a << 2;
printf("%d\n", b); //输出结果为52,二进制表示为0b110100
return 0;
}
右移运算符用符号 >>
表示。
它将操作数的所有二进制位向右移动指定的位数,并在高位填充0或1(具体取决于操作数的符号)
示例代码
#include
int main() {
int a = 13; //二进制表示为0b1101
int b = a >> 2;
printf("%d\n", b); //输出结果为3,二进制表示为0b0011
return 0;
}
通过本文的讲解,我们学会了6种位运算符的基础用法,在接下来的文章中,将会继续介绍这6种位运算符的高级用法。
欢迎各位 点赞 ⭐收藏 评论,如有错误请留言指正,非常感谢!