運運算元 | 名稱 | 範例 |
---|---|---|
& | 位與 | a && b |
| | 位或 | a | b |
^ | 位互斥或 | a ^ b |
~ | 位取反 | ~a |
<< | 二進位制左移 | a << 2 |
>> | 二進位制右移 | a >> 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); //輸出結果為9,二進位制表示為0b1001
return 0;
}
位或運運算元用符號 |
表示。
如果兩個運算元的對應位中至少有一個為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;
}
位互斥或運運算元用符號 ^
表示
如果兩個運算元的對應位不同,則位互斥或運算的結果為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;
}
位取反運運算元用符號 ~
表示
它會對運算元的每個二進位制位取反,即0變成1,1變成0
範例程式碼
#include <stdio.h>
int main() {
int a = 13; //二進位制表示為0b1101
int b = ~a;
printf("%d\n", b); //輸出結果為-14,二進位制表示為0b11111111111111111111111111110010
return 0;
}
左移運運算元用符號 <<
表示
它將運算元的所有二進位制位向左移動指定的位數,並在低位填充0
範例程式碼
#include <stdio.h>
int main() {
int a = 13; //二進位制表示為0b1101
int b = a << 2;
printf("%d\n", b); //輸出結果為52,二進位制表示為0b110100
return 0;
}
右移運運算元用符號 >>
表示。
它將運算元的所有二進位制位向右移動指定的位數,並在高位填充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種位運運算元的高階用法。