ZH
我的工具

位运算计算器(程序员计算器)

对 8、16、32 或 64 位整数做 AND、OR、XOR、NOT、NAND、NOR、移位、循环移位以及单个位的置位、清零和测试,并给出十六进制、二进制、八进制和有符号结果。

十进制(负数按补码)、0x 十六进制、0b 二进制或 0o 八进制。空格和 _ 会被忽略。
结果
0x0A
8 位
二进制
0000 1010
无符号
10
有符号(补码)
10
八进制
0o12
置位的位数(popcount)
2
偶校验
前导零个数
4
末尾零个数
1
操作数与结果
十六进制二进制无符号有符号
A0xCA1100 1010202-54
B0x0F0000 11111515
结果0x0A0000 10101010
我的工具 →
广告

位掩码、标志位、寄存器的值和哈希函数,在能直接看到各个位时更容易理解。这个程序员计算器对 8、16、32 或 64 位整数执行 AND、OR、XOR、NOT、NAND、NOR、XNOR、移位、循环移位,以及单个位的置位、清零、取反和测试,并像固定位宽的硬件那样让加、减、乘发生回绕。数字可以用十进制、十六进制、二进制或八进制输入;每个结果都以这四种形式显示,同时给出有符号和无符号值、置位个数(popcount)以及前导零和末尾零的个数。

使用方法

  1. 输入 A:十进制(负数按补码)、0x 十六进制、0b 二进制或 0o 八进制。
  2. 选择运算。
  3. 输入 B——第二个操作数、移位或循环移位的次数,或从最右边起算(从 0 开始)的位序号。
  4. 选择位宽;数值必须能容纳于其中。
  5. 查看十六进制、二进制、十进制(无符号和有符号)和八进制的结果。

计算公式

AND 1∧1 = 1 · OR 0∨0 = 0 · XOR 1⊕1 = 0 · NOT 翻转每一位 · A << n = A × 2ⁿ mod 2ʷ · A >>> n = ⌊A ÷ 2ⁿ⌋

所有运算都是精确的(BigInt),并按所选位宽 w 做掩码。算术右移 >> 会把符号位复制到空出的位置(相当于有符号值除以 2ⁿ 并向下取整);逻辑右移 >>> 则用 0 填充。循环移位会把从一端移出的位重新放回另一端。有符号值使用补码:最高位为 1 的位模式表示 值 − 2ʷ。

示例

A = 0b1100_1010(0xCA,202)AND B = 0x0F 只保留低 4 位:0x0A = 0000 1010 = 10。当 A = −16(8 位下为 0xF0)时,算术右移 2 位得到 0xFC = −4,而逻辑右移得到 0x3C = 60。

常见问题

>> 和 >>> 有什么区别?

对于负数,>> 用 1 填充,使其保持为负(算术右移),而 >>> 用 0 填充,把位模式当作无符号数。Java 和 JavaScript 两种运算符都有;C 和 C++ 则只用 >>,其行为取决于类型是否有符号。

怎样检查某个标志位是否被设置?

使用“测试 A 的第 B 位”,或把该值与只有这一位为 1 的掩码做 AND:(A & (1 << n)) != 0。

为什么 8 位下 200 + 100 等于 44?

300 无法放进一个字节(最大 255),所以结果发生回绕:300 − 256 = 44,就像无符号 8 位寄存器一样。

popcount 是什么意思?

值为 1 的位的个数。个数为奇数表示奇校验,简单的错误检查会用到它。

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). 位运算计算器(程序员计算器). https://kakao.mobile/zh/tools/bitwise-calculator/

MLA

“位运算计算器(程序员计算器).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/bitwise-calculator/.

广告