程式設計師計算器

在十進制、十六進制、八進制和二進制之間進行轉換,並應用按位和移位運算。

關於這個計算器

Convert integers between binary, octal, decimal, and hexadecimal, and apply bitwise operations. Type in any base and the others update live.

Number bases

  • Binary (base 2) — digits 0–1, used by computers.
  • Octal (base 8) — digits 0–7.
  • Decimal (base 10) — everyday numbers.
  • Hexadecimal (base 16) — digits 0–9 and A–F, common in programming.

Bitwise operations

AND, OR, XOR, and NOT compare bits position by position; shifts (≪, ≫) move bits left or right, which multiplies or divides by powers of two.

Signed numbers

Negative values use two's complement, where the highest bit indicates the sign. Toggle the signed mode to see how the same bits represent a negative number.

如何使用程式設計師計算器

  1. 1輸入當前進位制下的值(二、十、十六或八進位制)。
  2. 2切換到想檢視的目標進位制。
  3. 3檢視轉換後的值,以及(如需)位運算(AND、OR、XOR、移位)。

程式設計師計算器

位運算:a AND b 保留兩者都為 1 的位;a XOR b 保留恰好一個為 1 的位

程式設計師計算器在二進位制、八進位制、十進位制與十六進位制間工作,並暴露底層程式碼所用的位邏輯。

位與/或/異或與移位操作單個位元,是標誌位、掩碼與嵌入式控制的基礎。

位運算直接操作二進位制位,速度極快,在系統程式設計、許可權控制、圖形處理裡大量使用。最實用的幾個技巧:**判斷奇偶用 n & 1**(比 n % 2 快);**乘除 2 的冪用移位**(n << 3 = n × 8,n >> 2 = n ÷ 4 取整);**交換兩數不用臨時變數**(a ^= b; b ^= a; a ^= b);**消去最低位的 1**(n & (n-1),配合迴圈可統計二進位制中 1 的個數,這是面試高頻題)。

許可權系統喜歡用位標誌:讀=1、寫=2、執行=4,那麼「讀寫」許可權就是 1|2 = 3;判斷是否有寫許可權用 perm & 2;撤銷寫許可權用 perm & ~2。Unix 檔案許可權 755 就是三組三位的組合(擁有者 rwx=7、組 rx=5、其他 rx=5)。**用位儲存標誌的好處是任意組合只需一個整數**,儲存和傳輸都省。

運算符號示例結果常用用途
按位與&12 & 108提取指定位 / 掩碼
按位或|12 | 1014置位(開啟標誌)
按位異或^12 ^ 106翻轉位 / 交換變數
取反~~12-13位反轉(補碼)
左移<<3 << 212乘以 2ⁿ
右移>>12 >> 23除以 2ⁿ(取整)
判斷奇偶& 17 & 11結果為 1 即奇數

位運算真值表與常用技巧

常見問題

位與有什麼用?

它對數值做掩碼,僅保留在掩碼中也為 1 的位。

為何用移位而非乘法?

左移 n 位等於乘 2^n,在硬體層往往更快。

什麼是補碼?

有符號整數表示負數的標準方式:按位取反再加一。

左移右移要注意什麼?

左移會丟掉高位,可能溢位變號(有符號數)。右移分兩種:算術右移(保留符號位,負數補 1,Java/C 的 >>)和邏輯右移(補 0,Java 的 >>>、C 的無符號數)。對負數做右移要特別小心。另外移位位數不能等於或超過資料寬度,否則行為未定義。

為什麼 ~12 等於 -13 而不是 3?

因為採用補碼錶示。12 是 00001100,取反得 11110011,這個補碼對應的有符號數就是 -13(驗證:11110011 取反 00001100,加 1 得 00001101 = 13,所以原值是 -13)。位運算結果要看是有符號還是無符號型別,同一個位模式解釋不同結果就不同。

更多工具