二进制带符号数的计算主要涉及符号位处理和进位规则,具体方法如下:
一、符号位表示方法
原码 直接将符号位与数值位组合,符号位为0表示正数,1表示负数。例如:+5表示为`00000101`,-5表示为`10000101`。
反码
符号位不变,数值位取反。例如:+5的反码为`00000101`,-5的反码为`11111010`。
补码
反码加1。例如:-5的补码为`11111011`(10000101取反后加1)。
二、加法运算规则
同号相加
- 无符号数相加:直接按位相加,逢二进一。 - 有符号数相加:
- 若次高位无进位且最高位无进位,结果为正;
- 若次高位有进位但最高位无进位,结果为负(溢出)。 *示例*:`1101`(-5)+ `1011`(-9)= `11000`(-14,溢出)。
异号相加
- 无符号数相加:直接按位相加。 - 有符号数相加:
- 若次高位无借位且最高位无借位,结果为正;
- 若次高位有借位但最高位无借位,结果为负(下溢)。
三、减法运算规则
有符号数减法
- 转换为加法:减去一个数等于加上其补码。例如:`1101`(-5)- `1011`(-9)= `1101` + `0101`(9)= `10100`(4)。
四、溢出与下溢处理
溢出: 同号数相加结果为负数,或异号数相减结果为正数,需特殊处理(如舍入或报错)。- 下溢
五、注意事项
计算机内部统一使用补码表示有符号数,简化运算逻辑。- 位权从右向左依次为2⁰、2¹、2²等,例如`1101`表示1×2³+1×2²+0×2¹+1×2⁰=13。