为什么补码的补码就是原码?二进制里为什么减一取反和取反加一等价?

您所在的位置:网站首页 exe就是二进制吗 为什么补码的补码就是原码?二进制里为什么减一取反和取反加一等价?

为什么补码的补码就是原码?二进制里为什么减一取反和取反加一等价?

2024-07-17 20:09| 来源: 网络整理| 查看: 265

首先先理解这句话的意思,“(1)补码的(2)补码就是原码”,其中第一个标注的"补码",就是名词补码,而第二个标注的"补码",是个代称,含义就是取反加一,这句话完整的意思是一个数的补码,取反加一后就还原成原码了

一般来说,补码就是原码取反加一,还原成原码的时候应该先减去一再取反。其实在二进制里,"减一取反"和"取反加一"等价,所以我们可以这么做

为什么等价呢?

假设一个N位的二进制数,可表示的最大值是2^N - 1,例如八位二进制数,最大值是"11111111",就是2^8 - 1,另设一个数n,有一个数x,在这个N位的二进制数里,x = 2^N - 1 - n,即n + x = 2^N - 1,我们不妨称x为n的“补数”,那么对n取反,其实就是算出它对于当前N位数的最大二进制数的补数(因为一个位的数和自身取反的数相加必然是1),例如n是10110100(忽略符号位),取反后为01001011,此为x,而n+x=11111111,即当前N位数的最大二进制数,所以取反就是算补数。

那么对于数n,先取反求出补数,(2^N - 1 - n),再加一得: (2^N - n)

然后再先对n减一,得(n - 1), 再求补数:(2^N - 1 - (n - 1))= (2^N - n)

所以说二进制里,"减一取反"和"取反加一"等价,补码减一取反或者取反加一的值都一样,都能求出原码

 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3