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)

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。