跳至主要內容
Lizely

程式員計算器

檢視 ECMAScript 32-bit 的 AND、OR、XOR、NOT 與移位運算結果,同時以有符號、無符號、十六進位及二進位形式顯示。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.選擇與輸入運算數相同的底數。
  2. 2.輸入運算數 A 與運算數 B,或一個 0 至 31 的移位次數,然後選擇運算方式。
  3. 3.計算並檢視有符號、無符號、十六進位與二進位檢視,再複製 32-bit 的結果。

關於程式員計算器

程式員計算機可執行常見的 32-bit 位元運算,並以有符號十進位、無符號十進位、八位十六進位及 32-bit 二進位顯示相同結果。選擇輸入基數,輸入運算數,選擇 AND、OR、XOR、NOT、左移、有符號右移或無符號右移,並在本機執行計算。計算結果可複製。

本工具遵循 ECMAScript Number 位元語意。運算數會先轉為 32-bit 整數,以補數形式表示,再進行運算。AND 只有當兩個輸入位元皆為 1 時才會設定該位元。OR 當任一為 1 時會設定。XOR 當且僅當其中一個為 1 時會設定。NOT 會翻轉所有 32-bit 的位元。ECMAScript 規範與 MDN 表格獨立定義這些規則。

左移將位元向左移動,右側補零,高階位元被捨棄。有符號右移會將符號位元複製到新高階位元位置。無符號右移則補零,因此會返回從 0 到 4294967295 的無符號值。移位次數刻意限制為 0 至 31,與有效 32-bit 位元組位置相符,且不掩蓋 JavaScript 的模 32 行為。

輸入可使用 2、8、10 或 16 底數,無需字首。例如,FF 在底數 16 下為 255,-101 在底數 2 下為 -5。解析為嚴格:超出所選底數的數字將被拒絕,因此十進位 2 不會靜默轉為二進位。輸入限制於一個 32-bit 位元組的有符號下限與無符號上限。

有符號與無符號兩行是相同位元的兩種解釋。十六進位與二進位使用無符號模式,並補至八位元十六進位與 32 位元。因此 NOT 5 的有符號值為 -6,無符號值為 4294967290,十六進位為 FFFFFFFA,二進位模式以 1 開頭。溢位會導致位元被捨棄,因為超出 32-bit 位元組的位元被丟棄;2147483647 左移一次後會變成有符號的 -2。

本頁刻意與一般數位底數轉換工具不同。轉換僅用於檢視運算數與結果,不支援任意表示式、運算優先順序、浮點數、64-bit 機器整數、CPU 標誌、寬於 32 位元的遮罩、或 ECMAScript 數值位元運算之外的語言特定行為。BigInt 的語意也不同,本工具未使用。

八個源自規範的測試用例涵蓋所有運算型別,包括有符號與零填右移、NOT 與溢位。額外測試涵蓋嚴格的十六進位與二進位解析,以及非法數字。輸出保留所有 32 位元,避免常見錯誤——顯示負結果卻未呈現其正確的二補數模式。

使用此計算器學習遮罩、偵錯標誌、檢查協定欄位,或比較 JavaScript 位元運算結果。在應用於嵌入式系統、二進位檔案格式、加密或網路協定前,請先確認所需的位元寬度、符號性、端序、移位規則與目標語言。

此工具不顯示位元序,因為數值位元組在以位元組形式寫出前並無序列化順序。對於檔案或封包,應分別確認大端或小端排列;補零的位元模式無法回答此表示問題。

方法與來源

嚴格解析 radix 為 2、8、10 或 16 的整數,限於一個 32-bit 位元組內,套用 ECMAScript Number AND/OR/XOR/NOT/SHL/SHR/USHR 運算規則,限制移位範圍為 0 至 31,並以有符號、無符號、補零十六進位及補零二進位呈現相同位元結果。

常見問題

為何正數輸入可能產生負數結果?
當其高階位元被解釋為有符號二補數的符號位元時,相同的 32-bit 模式會被視為負數。
SHR 與 USHR 有何差異?
SHR 會傳遞符號位元;USHR 則以零填滿高階位元,並返回無符號值。
我可以計算 64-bit 的值嗎?
不可以。本頁刻意遵循 ECMAScript Number 32-bit 位元運算語意。
我需要加入 0x 或 0b 字首嗎?
不需要。請選擇輸入底數,並輸入數字而不加字首。

計算工具 使用指南

查看全部