先解释一个名词:码制
码制是进行数值运算的时候计算机中对带符号数的编码方式。
第一种出现的码制:原码
它最接近人对数字的表示,0的原码由两种表示方式。
正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。
它是最原始的胚胎,符号位在运算的时候需要单独处理,否则就会出现正数和负数相加会一直出现符号位为1,这是负数。然后就崩溃了。虽然最原始,至少它可以解决一部分问题了,它有存在的价值了。
第二种出现的码制:反码
它是基于原码上的进一步尝试,0的反码还是有两种方式。
对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。
它是修正版,符号位已经不需要单独处理了,可以参与到运算过程中。这是一大进步,采用这种码制,计算机的效率能提高很多,虽然0有两种表现方式。还是有缺陷的地方,至少它已经搞定大部分的问题了。
第三种出现的码制:补码
它是在反码上的进一步完善,0的表示方式只有一种了。
正数的补码与其原码相同,负数的补码为其反码在最低位加1。
它是最终版,已经可以算作一个完善的方案了,它已经脱离了人对数字的直观表示,它是计算机中很完备的符号数表现机制了。
这非常符合事物发展的一般过程,从刚开始出现的时候,问题很多,功能不够完善,只能部分覆盖需求;到进一步的大版本修复,覆盖大部分存在的问题,功能也可以说的过去;到最后一个成熟的解决方案出现,需要很多人去认真的思考,执行,完善。但是不完善的方案也有它完美发挥的场合,就需要仔细甄别环境和条件了。