无需登录 数据私有 本地保存

位运算在线计算器 - 与/或/非/异或及移位

31
0
0
0
位运算(Bitwise Operation)

位运算是指直接对二进制位进行操作的运算,是计算机中最底层的数据处理方式。与算术运算(加减乘除)不同,位运算逐位处理数据,每个比特位独立参与运算。位运算在底层编程、嵌入式系统、网络协议、加密算法、图形处理等领域有广泛应用。由于位运算直接操作二进制位,其执行效率通常高于对应的算术运算,因此在性能敏感的场景中经常被使用。

按位与(AND)

按位与运算(符号为 & 或 AND)对两个操作数的每一位执行逻辑与操作:只有当两个对应的位都为 1 时,结果位才为 1,否则为 0。真值表为:0 AND 0 = 0,0 AND 1 = 0,1 AND 0 = 0,1 AND 1 = 1。按位与最常见的应用是"掩码清除"——使用掩码(mask)清除特定位的值。例如,要清除一个字节的低 4 位,可以与 0xF0(11110000)执行 AND 运算。按位与还用于检查特定位是否为 1(与 1 执行 AND)。

按位或(OR)

按位或运算(符号为 | 或 OR)对两个操作数的每一位执行逻辑或操作:只要有一个对应的位为 1,结果位就为 1,两个都为 0 时结果才为 0。真值表为:0 OR 0 = 0,0 OR 1 = 1,1 OR 0 = 1,1 OR 1 = 1。按位或最常见的应用是"掩码设置"——使用掩码将特定位设为 1。例如,要将一个字节的第 3 位置为 1,可以与 0x08(00001000)执行 OR 运算。按位或常用于合并标志位或权限位。

按位异或(XOR)

按位异或运算(符号为 ^ 或 XOR)对两个操作数的每一位执行逻辑异或操作:当两个对应的位不同时,结果位为 1,相同时为 0。真值表为:0 XOR 0 = 0,0 XOR 1 = 1,1 XOR 0 = 1,1 XOR 1 = 0。XOR 有几个独特的性质:任何数 XOR 自身等于 0,任何数 XOR 0 等于自身,XOR 满足交换律和结合律。这些性质使得 XOR 在加密算法(如一次性密码本)、校验和计算、数据去重、标志位翻转等场景中非常有用。

按位非(NOT)

按位非运算(符号为 ~ 或 NOT)是一元运算,将操作数的所有位取反:0 变为 1,1 变为 0。NOT 运算的结果取决于位宽:在 8 位模式下,~0x00 = 0xFF;在 32 位模式下,~0x00000000 = 0xFFFFFFFF。NOT 运算常用于生成掩码的补码形式,或者在组合其他位运算时使用。例如,要清除某个位,可以先对 1 左移得到掩码,再取反得到清除掩码,最后与原值执行 AND 运算。

逻辑左移(Left Shift)

逻辑左移运算(符号为 <<)将操作数的所有位向左移动指定位数,高位丢弃,低位补 0。左移 n 位等价于将无符号数乘以 2^n(在不溢出的情况下)。例如,0x01 << 3 = 0x08,即 1 乘以 2^3 = 8。左移是快速乘以 2 的幂的高效方法,在需要进行 2 的幂乘法的场景中经常使用。需要注意的是,左移可能导致高位溢出丢弃,因此在使用时需要确保结果不会超出位宽范围。

算术右移(Arithmetic Right Shift)

算术右移运算(符号为 >>)将操作数的所有位向右移动指定位数,高位补符号位(即保持原值的正负号不变),低位丢弃。算术右移 n 位等价于将有符号整数除以 2^n(向零取整)。例如,-8(0xFFFFFFF8)>> 2 = -2(0xFFFFFFFE)。算术右移保持了有符号数的符号位,因此适合处理有符号整数的除以 2 的幂运算。在 x86/x64 处理器上,有符号整数的右移通常使用算术右移。

逻辑右移(Logical Right Shift)

逻辑右移运算(符号为 >>>)将操作数的所有位向右移动指定位数,高位补 0,低位丢弃。与算术右移不同,逻辑右移不考虑符号位,始终在高位补 0。逻辑右移 n 位等价于将无符号整数除以 2^n。例如,0xFFFFFFF8 >>> 2 = 0x3FFFFFFE。逻辑右移适合处理无符号整数的除以 2 的幂运算。在 Java 中,>>> 运算符用于逻辑右移,而 >> 用于算术右移。

位宽(Bit Width)

位宽是指参与位运算的二进制位数,决定了运算的数值范围和精度。常见的位宽有 8 位(字节)、16 位(短整型)、32 位(整型)和 64 位(长整型)。位宽的选择影响运算结果的展示和解释。例如,~0 在 8 位模式下结果为 0xFF(255),在 32 位模式下结果为 0xFFFFFFFF(4294967295)。位宽还影响移位运算的最大位数——左移或右移的位数不应超过位宽减 1,否则结果可能无意义。在本工具中,用户可以根据应用场景选择合适的位宽。

XOR 的独特性质与应用

XOR 运算有几个独特的数学性质使其在计算机科学中非常有用。自反性:a ^ a = 0,任何数与自身异或结果为零。恒等性:a ^ 0 = a,任何数与零异或结果不变。交换律和结合律:a ^ b = b ^ a,(a ^ b) ^ c = a ^ (b ^ c)。这些性质使得 XOR 可以用于:简单加密(将数据与密钥 XOR 得到密文,再次 XOR 得到原文)、数据去重(在一组数据中 XOR 所有值,出现偶数次的值会被消除)、交换两个变量的值(a ^= b; b ^= a; a ^= b; 无需临时变量)、奇偶校验(XOR 所有位判断 1 的个数是奇数还是偶数)。

位运算在实际开发中的应用场景

位运算在实际开发中有多种典型应用场景。权限管理:使用位掩码表示权限集合,AND 检查权限、OR 授予权限、AND+NOT 撤销权限、XOR 切换权限。标志位操作:使用单个整数的不同位表示不同的布尔标志,通过位运算高效地设置、检查和清除标志。快速乘除 2 的幂:左移 n 位等价于乘以 2^n,右移 n 位等价于除以 2^n,比乘除法运算更快。颜色处理:ARGB 颜色值的各个通道可以通过位运算提取和组合。网络协议:IP 地址的子网划分和路由匹配使用位掩码和 AND 运算。哈希函数:许多哈希算法使用 XOR、移位等位运算作为核心混合操作。