跳到正文
BCBinary Code Translator
菜单

位宽明确的位运算

位运算计算器

对 8、16、32 或 64 位数执行 AND、OR、XOR、NOT、左移和右移,并明确区分有符号与无符号语义。

所有掩码和移位都通过浏览器 BigInt 在本地精确执行。

定宽位串

尚无结果

补零十六进制

尚无结果

无符号十进制

尚无结果

有符号十进制

尚无结果

带明确位宽的位运算

位运算针对对应位工作:AND 只保留双方都为 1 的位,OR 保留任一方为 1 的位,XOR 保留不同的位,NOT 翻转所有位,移位则把整个位模式向左或向右移动。它们常用于掩码、标志、权限、颜色通道、协议字段和系统编程。

位宽不能省略。8 位下 NOT 00000000 是 11111111,16 位下则是 16 个 1。左移可能丢弃高位,有符号右移可能复制符号位。本工具要求明确 8/16/32/64 位,并把结果掩码到该宽度,同时显示有符号和无符号解释。

使用方法

在解释操作数之前先确定位宽和符号语义。

  1. 选择 AND、OR、XOR、NOT、左移或右移。
  2. 选择十进制、二进制或十六进制输入格式。
  3. 选择无符号或有符号补码语义,再选择 8、16、32 或 64 位。
  4. 输入 A;二元运算输入 B,移位输入非负十进制位数,NOT 只使用 A。
  5. 点击“计算”,对照位串、十六进制和两种十进制结果。

位运算示例

以下使用 8 位,便于观察掩码和符号扩展。

运算 结果位串 说明
10101010 AND 11001100 10001000 只有双方都为 1 的位置保留。
10101010 OR 11001100 11101110 任一输入为 1 的位置都会置 1。
10101010 XOR 11001100 01100110 两个输入不同的位置置 1。
NOT 00001111 11110000 在 8 位掩码内翻转每一位。
10000001 << 1 00000010 最高位被丢弃,右侧补 0。
11111110 >> 1 有符号 11111111 / 无符号 01111111 算术右移扩展符号位,逻辑右移左侧补 0。

输入格式与语义

十进制模式按所选符号语义校验范围。8 位无符号范围是 0 到 255,有符号范围是 -128 到 127。二进制和十六进制被视为原始非负位模式,必须能放入所选位宽;符号设置主要影响结果解释和右移方式。

移位数量始终是非负十进制整数。左移会丢弃越过位宽的高位并在右侧补 0;无符号右移左侧补 0;有符号右移先按补码解释 A,再复制符号位。

  • 二进制支持 0b 前缀、空格和下划线。
  • 十六进制支持 0x 前缀,结果会补足到所选宽度。
  • AND/OR/XOR 对原始位模式相同,符号只改变十进制解释。
  • 移位数大于等于位宽时,左移和逻辑右移为 0;负数算术右移最终保持全 1。

掩码和移位算法

操作数先转换为 0 到 2ⁿ-1 的无符号 BigInt 位模式。AND、OR、XOR 直接组合模式;NOT 先翻转,再应用 n 位掩码。

左移后应用掩码以模拟高位截断。逻辑右移使用无符号模式;算术右移先把最高位为 1 的模式解释成负数,再执行符号扩展。

最终始终显示恰好 n 位二进制、n/4 位十六进制,以及有符号和无符号十进制。

实际用途

当独立位或位字段具有不同含义时,位运算最有价值。

掩码与标志

检查权限或功能位,使用 OR 合并选项、AND 清除字段、XOR 切换位。

解析协议字段

拆分头部、状态字、设备寄存器和二进制文件字段。

颜色与通道

提取或组合 RGB/ARGB 通道,并核对字节移位位置。

测试系统代码

为固件、解析器、哈希和跨语言移位行为生成参考值。

常见错误与边界

结果异常通常来自位宽或有符号语义与目标系统不一致。

忘记位宽

普通数学整数没有自然最高位,NOT 和左移必须依据寄存器或协议宽度。

混淆算术和逻辑右移

负数算术右移补 1,无符号逻辑右移补 0。

给二进制输入加负号

二进制和十六进制表示原始位模式;数学负数请使用有符号十进制模式。

把移位当循环移位

本工具不旋转,移出的位会丢弃,不会从另一端回来。

与相关工具的区别

位运算在明确宽度内改变模式,不同于普通算术和进制改写。

二进制计算器

加法和乘法会产生进位;AND、OR、XOR 各位独立。

二进制补码

补码工具解释单个位模式,本页在有符号输入和算术右移时使用该解释。

进制转换器

进制转换保持数值,掩码和移位可能改变数值并丢弃高位。

IEEE-754

浮点位包含结构化字段,直接整数位运算会改变编码后的浮点值。

常见问题

为什么 NOT 必须选择位宽?

BigInt 没有自然高位边界,不加掩码会把无限前导零都翻成 1。

有符号和无符号 AND 的位结果不同吗?

不同符号语义下 AND/OR/XOR 的位结果相同,区别在十进制校验、显示和右移。

左移溢出会怎样?

越过所选位宽的位会被丢弃,结果按 8/16/32/64 位掩码。

有符号右移和无符号右移有什么区别?

无符号右移补 0,有符号算术右移复制符号位。

可以使用负的移位数量吗?

不可以,请改用相反方向并输入非负数量。

64 位运算是否精确?

精确,本工具使用 BigInt,不受 JavaScript Number 位运算的 32 位强制转换影响。

相关工具

查看全部工具

Cookie 偏好设置

管理你的 Cookie 偏好。必要 Cookie 无法关闭。

必要 Cookie

必要

用于语言选择、隐私选择和网站基础功能,属于必需项。

Cookie: NEXT_LOCALE

分析 Cookie

可选的分析 Cookie 可帮助我们了解访问情况并改进网站。

Cookie: _ga, _gid, _gat, _clck, _clsk

广告 Cookie

可选的广告 Cookie 可能用于展示相关广告并衡量广告效果。

Cookie: __gads, _gcl_au, IDE