位元運算

邏輯上的運算子在 C 中的語法分別如下:

  • AND (&)

  • OR(|)

  • NOT(!)

  • XOR(^)// bit值不一樣為 1

  • complement(~)

  • shift (<<, >>)

bitwise 的操作常與 "0x" 這種 16 進位表示法,方便轉換操作。

[例題] 基本運算

unsigned long num_a = 0x00001111;
unsigned long num_b = 0x00000202;
unsigned long num_c;

num_c = num_a & (~num_b);
num_c = num_c | num_b;

printf("%lx", num_c); // 00001313

[例題] mask 方法做 bitwise 操作

複製:memcpy 和 strcpy

1. 記憶體複製

memcpy() 可以複製任何類型資料,不處理字串結束 '\0' 的情況,當 *src 長度大於 *dest 時會 buffer overflow (編譯時不會錯誤)。

2. 字串複製

strcpy() 只能用於字串複製,不需要指定長度,因為會自動偵測以 '\0' 為結尾,當 *src 長度大於 *dest 時會 buffer overflow (*dest 將沒有 \0)。

最后更新于

这有帮助吗?