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

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

26
0
0
0
运算类型
位宽:
无效输入
无效输入
运算结果 AND 运算
170
十六进制
0xAA
八进制
0o252
二进制
10101010
二进制位视图 (MSB → LSB)   位=1   位=0   结果高亮
左右滑动查看所有位
常见问题与知识点

位运算(Bitwise Operation)是直接对整数的二进制位进行操作的运算。常见类型包括:AND(按位与)——两位都为1时结果为1;OR(按位或)——至少一位为1时结果为1;XOR(按位异或)——两位不同时结果为1;NOT(按位取反)——将所有位翻转;左移(<<)——将所有位向左移动,右侧补0;右移(>> 算术 / >>> 逻辑)——将所有位向右移动。位运算速度极快,广泛用于嵌入式开发、密码学、图形处理、权限管理等领域。

算术右移(>>)保留符号位(最高位),右移时左侧用符号位的值填充。对于正数填充0,对于负数填充1,因此保持数字的符号不变。例如:-8 >> 1 = -4。
逻辑右移(>>>)不考虑符号,右移时左侧总是填充0。这意味着负数经过逻辑右移后会变成很大的正数。例如:-1 >>> 1 在32位下 = 2147483647。
在Java和JavaScript中,>>是算术右移,>>>是逻辑右移。在C/C++中,右移的行为取决于编译器实现(通常对有符号数使用算术右移)。

  • 权限管理:用位掩码表示权限集合,如 UNIX 文件权限(rwx)。
  • 标志位存储:一个整数的不同位表示不同状态,节省内存。
  • 快速乘除2的幂:左移1位=乘2,右移1位=除2(整数除法)。
  • 奇偶判断:n & 1 为1则是奇数,为0则是偶数。
  • 交换变量:用XOR可在不使用临时变量的情况下交换两个整数。
  • 颜色处理:从RGB颜色值中提取或合并各通道。
  • 加密算法:XOR是许多加密算法的核心操作。
  • 网络编程:IP地址掩码、端口号处理、字节序转换。

位宽指参与运算的二进制位数。常见位宽有8位(字节)、16位(短整型)、32位(标准整型)和64位(长整型)。位宽影响以下几点:
1. 数值范围:8位无符号数范围0~255,32位范围0~4294967295。
2. NOT运算结果:NOT 0在8位下=255,在32位下=4294967295。
3. 溢出行为:超出位宽范围的位会被丢弃(截断)。
4. 移位行为:移位超出位宽的位会"移出"并丢失。本工具支持8位、16位和32位三种位宽模式。

XOR(异或)具有许多优美的数学性质:自反性——a ⊕ a = 0;恒等性——a ⊕ 0 = a;交换律——a ⊕ b = b ⊕ a;结合律——(a ⊕ b) ⊕ c = a ⊕ (b ⊕ c)。基于这些性质,XOR可用于无临时变量交换(a^=b; b^=a; a^=b)、简单加密(数据 ⊕ 密钥 = 密文,密文 ⊕ 密钥 = 原文)、错误检测(奇偶校验)以及查找数组中唯一出现奇数次的元素等经典算法问题。

左移运算 n << k 等价于 n × 2k(无溢出时)。例如:5 << 3 = 5 × 8 = 40。
右移运算 n >> k 等价于 n ÷ 2k(向下取整,对正数)。例如:100 >> 2 = 100 ÷ 4 = 25。
这在需要高性能的场景中非常有用,因为移位操作比乘除法指令快得多。许多编译器也会自动将乘以/除以2的幂的运算优化为移位指令。
基本位运算真值表
ABAND (A&B)OR (A|B)XOR (A⊕B)NOT (~A)
000001
010111
100110
111100

* NOT运算仅需一个操作数,表中~A列展示对A取反的结果。