逍遥自在学C语言 | 位运算符的基础用法
前言

一、人物简介
- 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。
 

- 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。
 

二、构成和表达方式
- 位运算符是一组用于在二进制数之间进行操作的运算符
 
| 运算符 | 名称 | 示例 | 
|---|---|---|
| & | 位与 | a && b | 
| | | 位或 | a | b | 
| ^ | 位异或 | a ^ b | 
| ~ | 位取反 | ~a | 
| << | 二进制左移 | a << 2 | 
| >> | 二进制右移 | a >> 2 | 
三、位运算符的应用
1、位与运算符 (&)
- 
位与运算符用符号
&表示。 - 
如果两个操作数的对应位都为1,则位与运算的结果为1,否则结果为0
 - 
示例代码
 
#include <stdio.h>
int main() {
  int a = 13; //二进制表示为0b1101
  int b = 11; //二进制表示为0b1011
  int c = a & b;
  printf("%d\n", c); //输出结果为9,二进制表示为0b1001
  return 0;
}

2、位或运算符 (|)
- 
位或运算符用符号
|表示。 - 
如果两个操作数的对应位中至少有一个为1,则位或运算的结果为1,否则结果为0。
 - 
示例代码
 
#include <stdio.h>
int main() {
  int a = 13; //二进制表示为0b1101
  int b = 11; //二进制表示为0b1011
  int c = a | b;
  printf("%d\n", c); //输出结果为15,二进制表示为0b1111
  return 0;
}

3、位异或运算符 (^)
- 
位异或运算符用符号
^表示 - 
如果两个操作数的对应位不同,则位异或运算的结果为1,否则结果为0
 - 
示例代码
 
#include <stdio.h>
int main() {
  int a = 13; //二进制表示为0b1101
  int b = 11; //二进制表示为0b1011
  int c = a ^ b;
  printf("%d\n", c); //输出结果为6,二进制表示为0b0110
  return 0;
}

4、位取反运算符 (~)
- 
位取反运算符用符号
~表示 - 
它会对操作数的每个二进制位取反,即0变成1,1变成0
 - 
示例代码
 
#include <stdio.h>
int main() {
  int a = 13; //二进制表示为0b1101
  int b = ~a;
  printf("%d\n", b); //输出结果为-14,二进制表示为0b11111111111111111111111111110010
  return 0;
}

5、左移运算符 (<<)
- 
左移运算符用符号
<<表示 - 
它将操作数的所有二进制位向左移动指定的位数,并在低位填充0
 - 
示例代码
 
#include <stdio.h>
int main() {
  int a = 13; //二进制表示为0b1101
  int b = a << 2;
  printf("%d\n", b); //输出结果为52,二进制表示为0b110100
  return 0;
}

6、右移运算符 (>>)
- 
右移运算符用符号
>>表示。 - 
它将操作数的所有二进制位向右移动指定的位数,并在高位填充0或1(具体取决于操作数的符号)
 - 
示例代码
 
#include <stdio.h>
int main() {
  int a = 13; //二进制表示为0b1101
  int b = a >> 2;
  printf("%d\n", b); //输出结果为3,二进制表示为0b0011
  return 0;
}

小结
通过本文的讲解,我们学会了6种位运算符的基础用法,在接下来的文章中,将会继续介绍这6种位运算符的高级用法。