为什么负数要以补码的形式存储?

哪有什么补码啊!

哪有什么原码啊!

哪有什么反码啊!

这些,都是计算机专家忽悠你的!

----------------------

在八位机中,零,就是用:0000 0000,存放的。

-1,当然就是:0000 0000-1 = (借 1) 1111 1111。

借位,不在八位之内,忽略就行啦。

因此,-1 在计算机中,就是 1111 1111 = 255!

计算机专家说它是补码,你别信他就没事了。

同理:

-2,就是:0000 0000-10 = 1111 1110 = 254。

-3,就是:0000 0000-11 = 1111 1101 = 253。

。。。

你自己总结吧:

 -X 在计算机中,就是:0-X。

 +X 在计算机中,就是:0+X = X。

这些数值,你用二进制算一下,就出来了!

当然,你还可以找出一些简便的算法。

例如,-31 存在 8 位机中,是多少?

解:0000 0000-0001 1111 = (1) 1110 0001。

1110 0001,也就是计算机专家所说的:-31 的补码。

求解:80-31 = ?

用 8 位二进制计算,如下:

 +80: 0101 0000

 -31: 1110 0001

--相加-------

 进 位 1、0011 0001

舍弃进位,只留 8 位数:0011 0001,这就是 49 !

----------------------

其实,计算机中的这些数值,你自己都是可以算出来的。

根本就不用计算机专家所说的:符号位原码反码补码正数三码相同负数取反加一符号位不变...!

所以,你自己算出来的这些数值,就不是他们说的:原码、补码!

因此,你就可以自己命名:龙虎码、太极码、Frank 码 ... 。

命名之后,你就可以用这些,去忽悠别人。

:)

转载自知乎做而论道
链接:https://www.zhihu.com/question/335614901/answer/1924429782545859633

转载请注明来源:bikey 密钥 » 为什么负数要以补码的形式存储?

评论 沙了个发

换个身份

取消评论