原码、反码和补码都可以作为计算机中数值的编码形式,而目前通用的是补码,那么为什么不是原码和反码呢?

1 计算方法

  原码、反码和补码的计算公式很容易理解,原码就是符号位+绝对值,正数的反码等于原码,负数的反码在原码的基础上,符号位不变,其余各位取反,补正数的补码等于原码,负数的补码等于其原码+1.

2 为什么要用补码作为计算机中数值的编码形式

  人脑最容易理解原码,人脑会自动识别符号位和绝对值位进行运算,但对于计算机电路,辨别符号位会让电路变得更复杂,因此就想到,如何让数值的符号位也参与运算?

  首先原码做不到这一点,1 - 1 = 0 = [00000001]原 + [10000001]原 = -2.

  于是出现了反码,1 - 1 = 1 + (-1) = [00000001] + [10000001]原 = [00000001]反 + [11111110]反 = [11111111]反 = [10000000]原 = -0,绝对值对了,但符号位似乎不太对,原因在于0在反码中有两种表示方法.

  于是,补码出现了,1 - 1 = 1 + (-1) = [00000001]+ [10000001]原 = [00000001]+ [11111111]= [100000000]补 = [00000000]补 = [00000000],这样绝对值对了,符号也对了,同时还可以表示-128.

  至于背后的数学原理,有空的时候单独出一期随笔

本人研究牲一枚,敬请各位大佬批评指正~~~

posted on 2023-03-12 17:40  BeLady  阅读(143)  评论(0编辑  收藏  举报