浅谈计算机中原码反码补码

原码

正数

正数中原码比较简单,直接将正数转换成二进制数,原码便是最高位为0其余位是该二进制数。位数不够时直接往前补0便可。比如42它的原码是如何计算出来的呢,如下图所示转换
最后它的原码便是:0101010若要求它的16位原码如何表示直接往前补0即可如42的16位原码是0000000000101010

负数

负数中原码和正数类似,但是复杂一点,先求出此负数绝对值的二进制数,然后在最高位写1其他位写上负数绝对值的二进制即可。如-42它的绝对值42的二进制数为101010,则-42的原码为1101010若位数不够便让最高位为1然后中间补0最后写上该数绝对值的二进制数。如-42的16位原码为:1000000000101010

反码

反码是在原码基础上稍作变化就能得出的。

正数

正数的反码就是它的原码。如42的反码是0101010位数不够时往前补0即可,如42的16位反码是:0000000000101010

负数

负数的反码便是保持它原码的最高位不变,其余各位取反。取反的意思就是0变1,1变0。
比如-42的原码为1101010则它的反码是:1010101,位数不够时往前补1即可,如-42的16位反码:1111111111010101

补码

数字在计算机中是以补码存储的,补码也是用的最多的。

正数

正数的补码就是它的原码。如42的反码是0101010位数不够时往前补0即可,如42的16位补码是:0000000000101010

负数

负数的补码就是在它反码的基础上+1就行,比如-42的反码是1101010则它的补码是:1010110,位数不够时往前补1即可,如-42的十六位补码是:1111111111010110

小技巧

求补码

我计算负数的补码时不是先求负数的原码再求负数的反码,接着求负数的补码的。我们知道正数的原码等于反码等于补码比较好求。所以我们可以先求出正数的补码。比如42的原码反码补码为:0101010,若要求-42的反码,便可求它绝对值的42的反码然后再将数取反再+1便得到-42的反码:1010110

求反码

正数的反码没什么好说的,负数的反码就是将正数反码按位取反便可,比如42的反码是0101010,-42的反码是1010101

快速求出补码表示的数

负数可以先将它各位按位取反然后+1便可得到它表示的数的绝对值,然后加个符号便是这个负数。

猜你喜欢

转载自blog.csdn.net/weixin_47617598/article/details/114793670
今日推荐