banner
指数爆炸

指数爆炸

我做了对饭 !
github
bilibili

真正告诉你什么是补码 ?

========================================

什么是补码?#

补码就是用正数来表示负数

========================================

例子#

  1. 例如,用 8 位二进制数表示 - 1 时,只需求得 1(00000001)的补码即可。将 00000001 的各位数的 0 取反成 1,1 取反成 0,然后再将取反结果 + 1,最后就转换成了 - 1(11111111)

  1. 再例如,表示 - 5,5 的二进制数为 0101,吧 0101 取反 + 1,转换成了 1011(-5)

=======================================

  • 其实你真的不用管什么老师教你的概念:
    正数的原反补都相同,负数的原反补要计算。
    还有什么,计算机里存的都是补码,不是原码。

其实计算机里存的就是这样一些数字,只不过是用补码来表示负数而已。

=======================================

那为什么要用补码来表示负数呢?#

因为所有的十进制计算在计算机里都是二进制的运算,所有的减法在计算机里都是加法。如果不用补码,那么 1-1 会等于 - 2。比如
0001-------------(1)
1001-------------(-1)
0001+1001=
1010-------------(-2)
所以我们要用补码来表示负数
0001-------------(1)
1111-------------(-1)
0001+1111=
10000------0000-------(0)

=======================================

补码为什么叫补码?#

可能是因为一个数和它的补码相加为 0。其实你想想就知道,表示 -5 的时候是用 5 来表示的,那 - 5 与 5 本来就互为相反数。

=======================================

小 tips:#

由于一个数和它的补码互为相反数,所以补码 ---> 取反 + 1---> 转换之前的数。
-5(1011)------ 取反 + 1-------5(0101)

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.