二进制补码计算器

离散数学与图论

计算二进制数的补码表示。适用于计算机科学、数字逻辑设计和离散数学。

输入十进制数(如 -5)或带 0b 前缀的二进制数(如 0b1010)

常见位宽:8 位(字节)、16 位(短整型)、32 位(整型)

常见示例

尝试这些预设示例,了解补码转换

正数(8位)

正数(8位)

将正十进制数 5 转换为 8 位补码

数字: 5

位宽: 8 bits

格式: decimal

负数(8位)

负数(8位)

将负十进制数 -5 转换为 8 位补码

数字: -5

位宽: 8 bits

格式: decimal

二进制输入(16位)

二进制输入(16位)

将二进制 1010 转换为 16 位补码

数字: 0b1010

位宽: 16 bits

格式: binary

最大值(32位)

最大值(32位)

将 32 位有符号整数的最大正值转换为补码

数字: 2147483647

位宽: 32 bits

格式: decimal

其他标题
理解二进制补码:全面指南
掌握计算机系统中的二进制运算与负数表示

什么是二进制补码?

  • 二进制数制
  • 有符号整数表示
  • 计算机算术
补码是二进制数上的一种数学运算,也是计算机系统中最常用的有符号整数表示方法。它为正数和负数提供了统一的二进制运算方式。
数学定义
n 位数 N 的补码定义为 2^n - N。例如,在 8 位系统中,N 的补码为 256 - N。该操作等价于所有位取反后加 1。
为什么用补码?
补码表示允许计算机用加法电路完成减法。当一个数与其补码相加时,结果为零(忽略溢出),非常适合数字系统中负数的表示。

补码示例

  • 4 位:5 (0101) 变为 -5 (1011)
  • 8 位:42 (00101010) 变为 -42 (11010110)

补码计算步骤详解

  • 手动计算方法
  • 算法实现
  • 验证过程
补码计算只需两步,可手动完成,也可用数字电路实现。理解此过程对计算机科学和数字电子学至关重要。
第一步:求反码
首先将二进制表示的每一位取反。0 变 1,1 变 0。等价于按位取反操作。
第二步:加一
在反码的基础上加 1,得到最终的补码。如果最高位产生进位,在定长运算中会被忽略。

计算步骤

  • 数字 6 (0110) → 反码 (1001) → 补码 (1010) = -6
  • 4 位下 -3:3 (0011) → (1100) → (1101) = -3

补码的实际应用

  • 计算机体系结构
  • 编程语言
  • 数字信号处理
补码表示是现代计算的基础,在计算机科学和工程领域有广泛应用。其特性使其非常适合高效硬件实现。
处理器设计
现代 CPU 使用补码进行整数运算。加法和减法电路对正负数通用,简化了处理器设计,降低了硬件复杂度。
编程语言
C、C++、Java、Python 等语言都用补码表示有符号整数。理解补码有助于程序员预测溢出行为和位运算结果。

应用领域

  • 大多数编程语言中的 32 位整数
  • 嵌入式系统与单片机编程
  • 数字信号处理算法

常见误区与正确方法

  • 原码与补码
  • 溢出处理
  • 范围计算
许多学生容易混淆补码与其他有符号数表示。理解差异并避免常见错误是掌握二进制运算的关键。
不仅仅是加符号位
与原码不同,补码的最高位不仅仅是符号位,其权值为 -2^(n-1),保证正负数运算一致。
不对称范围
n 位补码的范围是不对称的:-2^(n-1) 到 2^(n-1)-1。例如 8 位为 -128 到 +127,而不是 ±127。

关键区别

  • 8 位范围:-128 到 +127(不是 ±127)
  • 最小负数没有正数对应值
  • 零只有唯一表示(不同于原码)

数学特性与进阶概念

  • 模运算
  • 溢出检测
  • 符号扩展
补码运算遵循模 2^n 算法,具备理想的数学特性,便于高效算法和硬件实现。
模运算特性
补码运算本质上是模 2^n 运算。无论有无符号,二进制加减法一致,简化了硬件设计。
符号扩展
从低位扩展到高位时,符号扩展通过复制符号位保持数值不变。这一特性便于不同字长间的无缝转换。

进阶特性

  • 8 位 -1 (11111111) 扩展为 16 位 (1111111111111111)
  • 溢出发生在结果超出可表示范围时
  • 通过进位检测溢出