1、原码、反码和补码系列知识
机器数和真值
机器数
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。
例,十进制中的数 +3 ,计算机字长为8位,机器数是00000011;如果是 -3 ,机器数是 10000011 ;
真值
因为机器数的第一个位置存放的是符号位,所以不能参与进制的转换。因此把带符号位的机器数对应的真正数值称为机器数的真值。
例,机器数10000011,其4最高位1代表负,则真正数值是-3而不是形式值131(10000011转换成十进制等于131)。
原码、反码和补码
原码
用最高位表示符号位,其他位置存放该数二进制的绝对值;也就是最简单的机器鼠表示法。
例,带符号位的四位二进值数
-
1010 : 最高位为‘1’,表示这是一个负数,其他三位为‘010’,
-
即(0*2^2)+(1*2^1)+(0*2^0)=2(‘^’表示幂运算符)
-
所以1010表示十进制数(-2)。
下图给出部份正负数数的二进制原码表示法:
反码
正数的反码等于原码,附属的反码就是他的原码除符号位外,按位取反。
例,带符号位的四位二进制数
-
3是正数,反码与原码相同,则可以表示为0011
-
-3的原码是1011,符号位保持不变,低三位(011)按位取反得(100)
-
所以-3的反码为1100
下图给出部分正负数的二进制数反码表示法:
补码
正数的补码等于它的原码,负数的补码等于反码+1
特点
- 数值为零的补码表示唯一。
- 正数补码马志随着针织增大而增大,负数补码码值随着真值增大而增大。
补码加减法运算规则
- 参加运算的操作数用补码表示。
- 符号位等同于数值位一起参加运算
- 对于两数相加间的各种情况,计算机都执行加法操作。当操作码为加法运算时就直接进行相加,当操作码为减时,将简述联通符号位一起求反末尾加1再与被减数相加。
- 结果用补码表示。
- 同号相加和异号相减的情况会溢出。
例: