有符号二进制数的计算主要通过补码表示法实现,其核心规则如下:
一、基本概念
符号位表示 最高位为符号位,`0`表示正数,`1`表示负数。例如:`1000`表示负数,`0100`表示正数。
原码、反码、补码
- 原码: 直接将数值转换为二进制,符号位固定。 - 反码
二、运算规则
加法
- 符号位参与运算,按二进制加法规则(逢二进一)计算。 - 结果若符号位与原操作数相同,则为正确结果;若不同,则发生溢出。
减法
转换为加法运算:`A - B = A + (-B)`,其中`-B`为`B`的补码。
溢出判断
- 8位有符号数:
- 加法溢出:符号位与结果符号位不同。 - 减法溢出:无符号结果大于`2^7-1`(即127)。
三、示例
以8位有符号数计算`-2 + 3`为例:
补码表示
- `-2`:原码`1000 0010` → 反码`1111 1101` → 补码`1111 1110`
- `3`:原码`0011 0011` → 补码`0011 0011`
加法运算
`1111 1110 + 0011 0011 = 0011 0001`(结果为正数`3`)
四、注意事项
乘法和除法需根据具体需求实现,通常不直接使用补码规则。- 高位运算时需注意位数对齐,避免符号位混入计算。