补码的关键

来源:互联网 发布:wampserver 配置域名 编辑:程序博客网 时间:2024/05/17 00:54

想想,

如果把原来的二进制数里的1当做有效数字,0当做无效数字,这是定义一,

那么把二进制数取反后,

更改定义,可以把0当做有效数字,1当做无效数字,这是定义二,

例如a=0000 0000,取反后是~a=1111 1111,

或者b=0000 0011,取反后是~b=1111 1100,

那么a和~a都可以表示0,而且充分利用了最左边的一位标识码,就是说,如果标识码取0,根据定义一表示正数,如果标识码取1,根据定义二来表示负数

更进一步,可以发现,有这么个性质,~(0000 0000)+1=(11111 1111)+1=0000 0000,跟+0=-0是不是很像呢,

既然能充分表示+0和-0,那么就不会有编码重复的困扰了,

所以补码的公式就是b=~a+1

0 0