计算机中为什么都是补码???
举个2位机的例子,假设我们的PC机是2位机,即只能表示4个数字:00,01,10,11,这时Byte的范围是0~3,
所谓补码,就是这样来映射:
00~0
01~1
10~-2
11~-1
所谓反码,就是这样来映射:
00~+0
01~1
10~-1
11~-0
所谓原码,就是这样来映射:
00~+0
01~+1
10~-0
11~-1
由此可见,所谓原码、反码、补码都只是一种二进制到十进制的映射定义,补码是一一映射,源码和反码是单射但不是满射,对十进制的0都有两个二进制与其对应(+0、-0),所以浪费了一个码。补码的另一个优点是加法和减法可以统一运算和处理,溢出也能自动取模。
所以,计算机里的数无所谓原码、反码、补码,是人对这些二进制数的意义的解释才有了“X码”的区别。
所谓补码,就是这样来映射:
00~0
01~1
10~-2
11~-1
所谓反码,就是这样来映射:
00~+0
01~1
10~-1
11~-0
所谓原码,就是这样来映射:
00~+0
01~+1
10~-0
11~-1
由此可见,所谓原码、反码、补码都只是一种二进制到十进制的映射定义,补码是一一映射,源码和反码是单射但不是满射,对十进制的0都有两个二进制与其对应(+0、-0),所以浪费了一个码。补码的另一个优点是加法和减法可以统一运算和处理,溢出也能自动取模。
所以,计算机里的数无所谓原码、反码、补码,是人对这些二进制数的意义的解释才有了“X码”的区别。
浙公网安备 33010602011771号