位元運算計算機:AND、OR、XOR、移位操作同旗標操控詳解
位元操作係程式設計嘅刀刃——佢哋對一個位元組或者字組入面嘅個別位元進行操作,俾你直接控制數據嘅原始二進制表示。算術將數字當作抽象值嚟操作,而位元操作就操控 1 同 0 本身。呢個就係 Unix 上檔案權限點樣編碼到單一個整數、圖形程式員點樣由像素值提取 RGB 通道、網絡協議點樣將多個旗標打包到單一個標頭位元組、同快速雜湊函數同檢查和點樣被建造。我哋嘅免費位元運算計算機接受兩個運算元(或者一個用於 NOT 同移位),喺位元級別執行所選操作,同同時以二進制、十六進制同十進制顯示結果——每個位元位置都有標籤,等你可以精確驗證邊度發生咗咩。
位運算計算器
免費 · 無需註冊
分步指南
輸入你嘅運算元
以十進制、十六進制(前綴 0x)或二進制(前綴 0b)輸入兩個數字。計算機接受 32 位元同 64 位元模式——喺 32 位元模式,運算元被視為無符號 32 位元整數(0 到 4,294,967,295)。每個運算元以二進制格式顯示,位元位置由 31(最高有效)向下編號到 0(最低有效),等你可以喺應用任何操作之前視覺化確切邊啲位元被設定。
選擇位元操作
由七種操作中選擇:AND (&) 只喺兩個對應運算元位元都係 1 時將結果位元設為 1;OR (|) 喺任一運算元位元為 1 時設為 1;XOR (^) 喺剛好一個運算元位元為 1 時設為 1;NOT (~) 反轉單一運算元嘅每個位元;左移 (<<) 將所有位元向左移動 N 個位置(右邊填零);邏輯右移 (>>>) 將位元向右移動並填零;算術右移 (>>) 將位元向右移動並填符號位元。計算機會以動畫展示操作——顯示邊啲輸入位元對邊啲輸出位元有貢獻。
閱讀多格式結果同位元映射
結果以二進制(32 位元,每 4 個位元加空格以提高可讀性)、十六進制(32 位元為 8 個十六進制數字)同十進制顯示。視覺位元映射會標記結果中邊啲位置係 1,懸停喺任何位元上會顯示邊啲輸入位元產生咗佢。複製按鈕俾你即刻以任何格式攞到結果——二進制用於文檔、十六進制用於代碼、十進制用於計算。
使用技巧與最佳實踐
位元遮罩係最常見嘅位元操作模式:用 AND 同遮罩提取特定位元。要攞到一個 32 位元值嘅最低 8 個位元:value & 0xFF (255)。要測試位元 3 係咪被設定:(value & (1 << 3)) !== 0。要清除位元 5:value & ~(1 << 5)。要設定位元 7:value | (1 << 7)。要切換位元 2:value ^ (1 << 2)。呢四個模式——測試、清除、設定、切換——涵蓋咗實踐中 90% 嘅位元操控。
顏色通道提取係一個經典嘅位元運算用例。一個打包到 32 位元整數(0xRRGGBB)嘅 RGB 像素可以用以下方式解包:red = (pixel >> 16) & 0xFF,green = (pixel >> 8) & 0xFF,blue = pixel & 0xFF。一行代碼,你就用右移同 AND 遮罩提取咗三個顏色通道。ARGB(透明通道)使用最高 8 個位元:alpha = (pixel >> 24) & 0xFF。
左移 1 個位置等於乘以 2;右移 1 個位置等於除以 2(整數除法,算術移位向零捨入,邏輯移位向負無限捨入)。左移 N 個位置等於乘以 2ᴺ。右移 N 個位置等於除以 2ᴺ。CPU 喺單一個時鐘週期內執行移位,令佢哋對於 2 嘅冪嚟講比通用乘法/除法快好多。
XOR 交換係一個唔使臨時變數就可以交換兩個變數嘅經典技巧:a ^= b; b ^= a; a ^= b。呢個序列之後,a 同 b 已經交換咗值。佢成立係因為 XOR 係可交換、可結合嘅,同 x ^ x = 0、x ^ 0 = x。喺現代代碼入面,呢個主要係一個好奇心——編譯器對標準交換嘅最佳化一樣咁好——但佢係展示 XOR 代數特性嘅一個好示範。
權限旗標將多個開/關設定打包到單一個整數。Unix 檔案權限使用 12 個位元:底部 9 個係擁有者/群組/其他人嘅 rwx(每個 r=4、w=2、x=1)。更高位元編碼 setuid(4000)、setgid(2000)同 sticky(1000)。每個權限都係一個可以獨立測試或修改嘅單一旗標——呢個係幾乎每個 C API 入面每個 flags 參數背後嘅模式。
CRC(循環冗餘檢查)同檢查和計算大量使用 XOR 同移位操作。一個基本 CRC-8 實現會將每個數據位元組 XOR 到一個執行寄存器入面,然後移位同條件性 XOR 一個多項式。呢個產生一個 8 位元嘅「指紋」用嚟檢測數據嘅意外更改。我哋嘅計算機俾你逐位元逐步執行呢類演算法嚟睇佢哋點樣運作。
右移運算子有兩種風格:邏輯(JavaScript/Java 中嘅 >>>),將騰出嘅最左位元填零;同算術(大多數語言中嘅 >>),將佢哋填做符號位元嘅副本(為有符號整數保留符號)。將 -8(8 位元有符號中嘅 11111000)用算術移位右移 1 個位置產生 -4(11111100);用邏輯移位產生 124(01111100),一個完全唔同嘅值。
常見問題解答
位元操作係電腦可以執行嘅最細同最快嘅操作——字面上一個 CPU 週期,一個邏輯閘層咁深。我哋嘅計算機令呢啲操作變得可見,精確顯示邊啲位元改變同點解。無論你係打包旗標、提取顏色通道、定係除錯加密實現,全面細節睇到你嘅位元。
免費試用此工具 →open_in_new