什麼是位元 OR 計算機?
這個工具能計算兩個整數的位元 OR(按位或)運算,在大多數程式語言中寫作 a | b。OR 運算會逐位元比較兩個數字,只要對應的兩個位元中有任一個(或兩個都)是 1,結果該位元就是 1;只有當兩個位元都是 0 時,結果才是 0。
如何使用
輸入第一個整數(A)與第二個整數(B),即可讀取十進位的運算結果。本工具同時支援正整數與負整數。輸入與輸出皆以十進位(base 10)呈現,但運算時系統會在內部將每個數值轉成二進位來處理。
公式說明
OR 運算依照下列真值表逐位元進行:\(0|0=0\)、\(0|1=1\)、\(1|0=1\)、\(1|1=1\)。
$$\text{Result} = \text{A} \mathbin{|} \text{B}$$舉例來說,假設 A = 12、B = 10。換成二進位,12 = 1100、10 = 1010。將兩者對齊後逐欄做 OR 運算,得到 1110,換算回十進位就是 14。因此 \(12 \mathbin{|} 10 = 14\)。
實際範例
假設你想計算 \(5 \mathbin{|} 3\)。二進位中,5 = 101、3 = 011。逐位元做 OR:\(1|0=1\)、\(0|1=1\)、\(1|1=1\),得到 111 = 7。計算機會回傳 7。
常見按位或值參考
下面的網格針對 0 到 8 的每一對小操作數提供了 \(A \mathbin{|} B\)。讀取 A 的行和 B 的列;該單元格是十進制結果。
| | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 7 | 9 |
| 2 | 2 | 3 | 2 | 3 | 6 | 7 | 6 | 7 | 10 |
| 3 | 3 | 3 | 3 | 3 | 7 | 7 | 7 | 7 | 11 |
| 4 | 4 | 5 | 6 | 7 | 4 | 5 | 6 | 7 | 12 |
| 5 | 5 | 5 | 7 | 7 | 5 | 5 | 7 | 7 | 13 |
| 6 | 6 | 7 | 6 | 7 | 6 | 7 | 6 | 7 | 14 |
| 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 15 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 8 |
對角線(其中 A = B)始終返回操作數本身,因為 x | x = x。
按位或是合併權限標誌的標準方法。常見的 Unix 風格權限位是讀取 = 4 (100)、寫入 = 2 (010)、執行 = 1 (001):
| 組合 | 表達式 | 十進制 | 二進制 |
|---|---|---|---|
| 讀取 + 寫入 | 4 | 2 | 6 | 110 |
| 讀取 + 執行 | 4 | 1 | 5 | 101 |
| 寫入 + 執行 | 2 | 1 | 3 | 011 |
| 讀取 + 寫入 + 執行 (rwx) | 4 | 2 | 1 | 7 | 111 |
| 兩個字節合併 | 240 | 15 | 255 | 11111111 |
關鍵術語
- 位
-
最小的數位資料單位,持有二進制值
0或1之一。8 位組成一個字節。 - 設置位 / 未設置位
-
設置位的值為
1;未設置(或清除)位的值為0。按位或常用於設置特定位而不影響其他位。 - 位掩碼
- 一個整數,其位模式被選擇來選擇、設置或清除另一個值中的特定位。將一個值與掩碼進行或運算會強制掩碼中設置的每一位在結果中被設置。
- 標誌
-
單個位(通常被賦予一個具名常數),用於表示開/關設置。多個標誌被打包到一個整數中並與或組合,例如
READ | WRITE。 - 二的補碼
-
計算機表示有符號整數的標準方法。最高有效位帶有負權重,所以一個
n位數的範圍是 \(-2^{n-1}\) 到 \(2^{n-1}-1\)。例如,\(-1\) 儲存為所有 1 位。 - 最高有效位 / 最低有效位 (MSB / LSB)
- MSB 是最左邊的位,帶有最大的位置值(以及二的補碼中的符號);LSB 是最右邊的位,位置值為 \(2^0 = 1\)。
- 十進制對二進制
- 十進制(十進制)是使用數字 0-9 的日常數字系統。二進制(二進制)僅使用 0 和 1,每個位置值為 2 的冪。按位運算作用於二進制表示,而此計算器以十進制顯示結果。
常見問題
位元 OR 等同於加法嗎?不是。OR 不會產生進位。\(1|1\) 仍然是 1,但 1+1 在二進位中會進位成 10。只有當兩個運算元沒有任何重疊的 1 位元時,兩者結果才會相同。
負數該怎麼處理?負整數使用二補數(two's complement)表示,因此對負數做 OR 運算時,連同符號位元在內,都遵循相同的位元規則。
OR 運算有什麼用途?OR 常用來設定(開啟)特定位元,或合併旗標(flag)值,例如合併多組權限遮罩(permission mask)。