位运算计算器 - AND、OR、XOR、NOT、移位操作
用十进制、二进制和十六进制输入/输出,立即执行整数位运算逻辑。
选择一种运算,并以十进制、二进制或十六进制输入数值,即可计算位运算结果。
位运算计算器 - AND、OR、XOR、NOT、移位操作
用十进制、二进制和十六进制输入/输出,立即执行整数位运算逻辑。
关于位运算计算器
位运算是直接作用于整数二进制表示的基础计算操作。它们不会把数字当作一个整体处理,而是逐位检查并独立操作每一个比特位。这种底层控制使其在系统编程、嵌入式开发、密码学和性能关键算法中都非常重要。
AND 运算 (&) 会在两个操作数对应位都为 1 时输出 1。它常用于掩码特定位,例如 `value & 0xFF` 可以提取任意整数的最低 8 位。OR 运算 (|) 会在任一操作数的对应位为 1 时将该位设为 1,因此适合合并标志位和设置指定位。XOR 运算 (^) 仅在两个输入位不同时输出 1,因此非常适合切换位、检查相等性以及某些加密算法。
NOT 运算 (~) 会反转操作数的每一位。在 JavaScript 的 32 位有符号整数模型中,`~n` 等于 `-(n + 1)`。为了便于理解,结果会以无符号 32 位二进制字符串显示。左移 (<<) 会将所有位向左移动指定的位数,相当于乘以 2 的幂。右移 (>>>) 会将所有位向右移动,相当于除以 2 的幂并取整。
在现代硬件上,位运算通常只需一个 CPU 时钟周期即可完成,因此比等价的算术运算快得多。这也是它们经常出现在哈希函数、校验和算法、图形中的颜色打包(将 RGBA 通道存入一个 32 位整数)、操作系统权限标志以及网络协议实现中的原因。
这个计算器支持十进制(基数 10)、二进制(基数 2)和十六进制(基数 16)输入,并会同时返回三种格式的结果,方便你无需手动转换即可交叉核对表示方式。所有计算都使用与 ECMAScript 规范一致的 JavaScript 32 位整数位运算语义。
位运算示例
常见位运算示例,展示输入值以及十进制和二进制结果。
| 运算 | 结果(十进制) | 二进制表示 |
|---|---|---|
| 12 AND 10 | 8 | 1100 & 1010 = 1000 |
| 12 OR 10 | 14 | 1100 | 1010 = 1110 |
| 12 XOR 10 | 6 | 1100 ^ 1010 = 0110 |
| NOT 5 | -6 | ~00000101 = 11111010(有符号 32 位) |
| 3 LEFT SHIFT 2 | 12 | 011 << 2 = 1100(乘以 4) |
| 24 RIGHT SHIFT 3 | 3 | 11000 >>> 3 = 00011(除以 8) |
如何使用位运算计算器
- 选择要执行的位运算:AND、OR、XOR、NOT、左移或右移。
- 选择与你的数字一致的输入格式:十进制、二进制或十六进制。
- 在“第一个数”字段中使用所选格式输入第一个数字。
- 对于二元运算(AND、OR、XOR、移位),在“第二个数 / 移位位数”字段中输入第二个数字或移位位数。
- 点击“计算”,即可同时查看十进制、二进制和十六进制结果。
位运算计算器常见问题
什么是位与(AND)运算?
位与会比较两个数中每一对对应位,只有当两个位都为 1 时才输出 1,否则输出 0。例如,12 AND 10 的二进制结果是 1100 & 1010 = 1000,十进制等于 8。它通常用于掩码或提取特定位。
位异或(XOR)是如何工作的?
位异或(exclusive OR)在两个输入位不同时输出 1,相同时输出 0。例如,12 XOR 10 是 1100 ^ 1010 = 0110 = 6。XOR 常用于加密、校验和,以及在不影响其他位的情况下切换特定位。
NOT 运算会对数字做什么?
位非(~)会反转操作数的所有位。在 32 位有符号整数运算中,~n 等于 -(n + 1)。因此 ~5 = -6,~0 = -1。这个计算器会把结果显示为无符号 32 位二进制字符串,以清楚展示所有翻转后的位。
左移和右移有什么不同?
左移(<<)会按指定位数把所有位向更高位移动,空出的位用 0 填充。这相当于乘以 2 的移位次数次幂。右移(>>>)会把位向更低位移动,并用 0 填充,相当于除以 2 的幂并取整。
什么时候该使用十六进制输入?
当你处理内存地址、颜色代码(例如红色的 0xFF0000)、网络掩码,或文档和源代码中通常以十六进制表示的值时,十六进制非常方便。每个十六进制数字正好代表 4 位二进制,因此它是紧凑且易读的二进制数据表示。
为什么位运算在编程中很重要?
位运算只需一个 CPU 周期即可执行,因此速度极快。它们在系统编程中用于设置硬件寄存器,在图形处理中用于打包 RGBA 颜色,在密码学中用于加密算法,在游戏开发中用于紧凑地存储标志位。理解它们是计算机科学的基础。