前言
一、人物簡介
- 第一位閃亮登場,有請今後會一直教我們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種位運算子的高階用法。