一.反码的范围
反码表示法规定:正数的反码与其原码相同。负数的反码是对其原码逐位取反,但符号位除外。
在规定中,8位二进制码能表示的反码范围是-127~127。
此时(字长为8位), -128没有原码和反码(只有补码)。
那么,为什么规定字长8位时-128没有原码和反码呢?下面解释。
首先看-0,[-0]原码=1000 000,其中1是符号位,求反操作,算出[-0]反码=1111 1111,
再看-128,假如它有原码且[-128]原码=1000 000,假如让-128也有反码,求反操作,则[-128]反码=1111 1111,
你会发现,-128的反码和-0的反码相同,所以为了避免面混淆,有了-0的原码,便不能有-128的原码补码,这是8位比特位位数限制决定的。
二.原码 反码 补码的范围
前提:字长是8位二进制数。
原码 -127~127 (-128没有原码反码,原因看前面解释~)
反码 -127~127
补码 -128~127
[+0]原码=0000 0000, [-0]原码=1000 0000
[+0]反码=0000 0000, [-0]反码=1111 1111
[+0]补码=0000 0000, [-0]补码=0000 0000
-128的八位补码是1000 0000 这是人为规定的
因为+128的原值在8位中是表达不出来的。