假设有一个 int 类型的数,值为5,那么,它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
-5在计算机中如何表示?在计算机中,负数以原码的补码形式表达。什么叫补码
呢?这得从原码,反码说起。
原码:
一个正数,按照绝对值大小转换成的二进制数就是正数的原码
一个负数,按照绝对值大小转换成的二进制数,然后最高位补1,就是负数的原码
比如
00000000 00000000 00000000 00000101 是5的原码。
10000000 00000000 00000000 00000101 是-5的原码。
反码:
正数的反码与原码相同
负数的反码为对该数的原码除符号位外各位取反
正数00000000 00000000 00000000 00000101 的反码还是 00000000 00000000 00000000 00000101
负数10000000 00000000 00000000 00000101每一位取反(除符号位),得11111111 11111111 11111111 11111010。
补码
正数的补码与原码相同
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
比如:10000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。
转换为十六进制:0xFFFFFFFB。