逍遥自在学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种位运算符的高级用法。
热门相关:帝少的专属:小甜心,太缠人 仗剑高歌 霸皇纪 薄先生,情不由己 爸爸的朋友