带符号整数的表示
原码:用最高位表示符号(0为正,1为负),其余位表示数值的绝对值。例如,8位二进制数中,+7的原码为00000111,-7的原码为10000111。
反码:正数的反码与原码相同,负数的反码是其原码符号位不变,其余位按位取反。例如,-7的反码为11111000。
补码:正数的补码与原码相同,负数的补码是其反码加1。补码是计算机中存储和运算带符号整数的主要形式。例如,-7的补码为11111001。
带符号整数的运算
加法:补码形式的带符号整数加法可以直接进行,符号位也参与运算。结果的符号由运算后的最高位决定。
减法:通过加上减数的相反数(即取反码后加1)来实现。在计算机中,减法运算最终也转换为加法运算来处理。
溢出处理:在运算过程中,如果结果超出了带符号整数的表示范围,则会发生溢出。对于补码而言,正溢出时,最高位进位被忽略,结果为正数但可能不正确;负溢出时,最高位进位导致符号位变0,结果为负数但绝对值很大。
带符号整数的特点
统一运算规则:补码的使用使得计算机中的加法和减法运算可以统一处理,简化了电路设计。
范围扩展:相比于原码和反码,补码能够多表示一个负数(即-2^(n-1)),其中n为位数。
简化0的表示:在补码中,真值0只有一种表示形式(即全0),避免了原码和反码中0有两种表示形式的问题。