为什么补码的补码就是原码?二进制里为什么减一取反和取反加一等价? |
您所在的位置:网站首页 › exe就是二进制吗 › 为什么补码的补码就是原码?二进制里为什么减一取反和取反加一等价? |
首先先理解这句话的意思,“(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 |