進位轉換器

在此輸入一個數字,即可看到它在不同進位制下的表示方式,以及其底層的 8 位元結構。這是理解電腦如何儲存數字的第一步。

8位元視覺化表示 (8-bit Representation)

位元運算沙盒

動手操作,親眼見證位元運算的魔力。輸入數字並選擇運算子,觀察每一步的計算過程,加深您對 AND、OR、XOR 等運算的理解。

APCS 實用技巧

學習程式競賽中常見的位元運算技巧。這些精簡的程式碼不僅執行效率高,更能展現您對底層原理的深刻理解。

判斷奇偶數

C++ Python

一個數字的奇偶性取決於其最低有效位 (LSB)。若 LSB 為 1,是奇數;若為 0,是偶數。n & 1 操作會遮蔽掉除了 LSB 以外的所有位元,直接得到 LSB 的值。

bool isEven = (n & 1) == 0;

用 XOR 交換變數

C++ Python

利用 XOR 的特性 a^a=0a^0=aa^=b 後 a 儲存了兩者差異;b^=a 使 b 變回原始 a;a^=b 使 a 變回原始 b,從而完成交換。

a ^= b;
b ^= a;
a ^= b;

檢查是否為 2 的冪

C++ Python

2 的冪在二進位中只有一個 1 (如 1000)。n-1 會將這個 1 變 0,其後的 0 都變 1 (如 0111)。因此 n & (n-1) 的結果必為 0。

bool isPowerOfTwo = n > 0 && (n & (n - 1)) == 0;

清除最低位的 1

C++ Python

n-1 會翻轉 n 中最低位的 1 及其之後的所有位元。當 nn-1 做 AND 運算時,這個最低位的 1 就會被清除,而更高位的位元不受影響。

n = n & (n - 1);

取得第 k 個位元

C++ Python

n >> k 將第 k 個位元移動到最低位。然後 & 1 操作會遮蔽掉所有其他位元,只留下我們感興趣的第 k 個位元的值 (0 或 1)。

int kthBit = (n >> k) & 1;

設定第 k 個位元為 1

C++ Python

1 << k 產生一個只在第 k 位為 1 的數字。透過 OR 運算,可以強制將 n 的第 k 位設為 1 (因 x|1=1),而不影響其他位元 (因 x|0=x)。

n = n | (1 << k);