位运算计算器: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 位整数中的 RGB 像素(0xRRGGBB)可以解包为:red = (pixel >> 16) & 0xFF、green = (pixel >> 8) & 0xFF、blue = pixel & 0xFF。一行代码就使用右移和 AND 掩码提取了三个颜色通道。ARGB(alpha 通道)使用顶部 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