整数在内存中存储的是补码
整数有3种二进制的表示形式:原码、反码和补码。而整数在内存中存储的是补码。接下来就让我来讲一讲原码、反码和补码的的形式分别是什么吧。
对正数而言,其原码、反码和补码都相同。
整型,在32位平台下占4个字节,32个比特位
如正整数5,它的原码、反码、补码都相同,如下:
原码:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
反码:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
补码:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
而负整数5,它的原码、反码、补码确是这样的:
原码:1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
反码:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0
补码:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
整数在存储时,最高位是符号位,0表示正数,1表示负数。所以5的原码的最高位是0,-5的原码的最高位是1。而负数的反码就是在原码的基础上,最高位也就是符号位不变,其他的按位取反;补码则是在反码二进制上加1。最后强调一点,整数在内存中存储的是补码!!!