進位轉換器
在此輸入一個數字,即可看到它在不同進位制下的表示方式,以及其底層的 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=0
和 a^0=a
。a^=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 及其之後的所有位元。當 n
與 n-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);