逍遙自在學C語言 | 位運運算元的基礎用法

2023-04-08 12:00:25

前言

一、人物簡介

  • 第一位閃亮登場,有請今後會一直教我們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種位運運算元的高階用法。