這一個題目已經從「數字表示」進入電腦底層操作核心了。
bitmask(位元遮罩)本質就是:👉 用二進制的每一個 bit 當作開關(0/1)來控制資料用「權限 → 一般資料 → AI tensor」三層幫來說明。
一、什麼是 bitmask?
👉 一句話定義:
bitmask = 一組用來“選擇 / 開關某些 bit”的二進制數
搭配運算:
- AND(&)👉 篩選
- OR(|)👉 開啟
- XOR(^)👉 切換
- NOT(~)👉 反轉
- SHIFT(<< >>)👉 位移
二、最經典:權限控制(Linux chmod)
你應該看過:
chmod 755 file
其實就是 bitmask:
7 = 111 (rwx)
5 = 101 (r-x)
5 = 101 (r-x)
權限對應 bit
r = 4 = 100
w = 2 = 010
x = 1 = 001
範例:設定權限
假設:
權限 = 000
開啟 read(r)
000 | 100 = 100
再開 write(w)
100 | 010 = 110
👉 現在是 rw-
範例:檢查權限
110 & 100 = 100 → 有 read
110 & 001 = 000 → 沒 execute
👉 AND 就是「檢查開關」
三、操作一般資料(bit-level 操作)
假設一個 8-bit 資料:
data = 10110010
1️⃣ 取出某幾個 bit
mask = 00001111
10110010
& 00001111
-----------
00000010
👉 只保留低 4 位
2️⃣ 設定某個 bit(設為 1)
👉 開第 3 位:
data | (1 << 2)
3️⃣ 清除某個 bit(設為 0)
data & ~(1 << 2)
4️⃣ 切換某個 bit(翻轉)
data ^ (1 << 2)
👉 這些就是所有底層操作的核心(在 CPU 裡面每天都在做)
四、進階:bitmask =「多個布林變數壓縮」
例如你有 8 個開關:
A B C D E F G H
傳統:
8 個 boolean
bitmask:
1 個 byte(8 bit)
👉 記憶體直接壓縮 8 倍
五、AI / Tensor 的 bitmask(重點)
在 AI(例如 NVIDIA GPU)中,bitmask 用得非常多:
1️⃣ Attention Mask(Transformer 核心)
在 Transformer:
👉 有些 token 不該被看到(例如 padding)
mask 長這樣:
tokens: A B C PAD PAD
mask: 1 1 1 0 0
運算時:
attention_score + (mask * -∞)
👉 mask = 0 → 變 -∞ → 不會被選中
2️⃣ 條件選擇(Tensor 過濾)
例如:
import torch
x = [1, 2, 3, 4]
mask = [1, 0, 1, 0]
result = x[mask]
👉 得到:
[1, 3]
👉 本質就是 bitmask 篩選
3️⃣ GPU 平行計算(warp mask)
GPU 內部:
- 32 個 thread 同時跑
- 用 bitmask 決定哪些 thread active
👉 例如:
11101101代表哪些 thread 在工作
4️⃣ 梯度 / 訓練控制
loss = loss * mask
👉 某些資料:
- 不計算 loss
- 不更新梯度
六、超關鍵觀念(你要記住)
bitmask 本質是:
👉 用數學運算取代 if / for / 判斷
傳統寫法(慢)
if x[i] != 0:
do something
bitmask(快)
x * mask
👉 GPU 最愛這種(完全平行)
七、為什麼 AI 一定用 bitmask?
因為:
1️⃣ 可完全平行(SIMD / GPU)
2️⃣ 沒有分支(branch-free)
3️⃣ 超高速(硬體直接支援)
八、一句話總結
👉 bitmask = 用 bit 控制世界
- 在 OS → 控權限
- 在 CPU → 控資料
- 在 AI → 控 tensor flow


