我们平时使用的数字大多是十进制,也就是满 10 进 1。除此之外还有满 2 进 1 的二进制和满 16 进 1 的十六进制等等。
二进制
在 Java 中加上前缀“0b”就可以写二进制数,如 0b1000 就是 8。
权:2^n
补码
最高位为符号位:正数为 0,负数为 1
正数的补码:与原码相同
负数的补码:符号位为 1,其余位为该数绝对值的原码按位取反,然后整个数加 1。
假设计算机中使用 4 位的二进制表示数据
四位补码示例
十进制 | 绝对值的原码 | 反码 | 补码 |
---|---|---|---|
7 | 0111 | 1000 | 0111 |
6 | 0110 | 1001 | 0110 |
5 | 0101 | 1010 | 0101 |
4 | 0100 | 1011 | 0100 |
3 | 0011 | 1100 | 0011 |
2 | 0010 | 1101 | 0010 |
1 | 0001 | 1110 | 0001 |
0 | 0000 | 1111 | 0000 |
-1 | 0001 | 1110 | 1111 |
-2 | 0010 | 1101 | 1110 |
-3 | 0011 | 1100 | 1101 |
-4 | 0100 | 1011 | 1100 |
-5 | 0101 | 1010 | 1011 |
-6 | 0110 | 1001 | 1010 |
-7 | 0111 | 1000 | 1001 |
-8 | 1000 | 0111 | 1000 |
常用补码的范围:
位数 | 二进制范围 | 十进制范围 |
---|---|---|
4 位补码的范围 | 1000~0111 | -8~7 |
8 位补码的范围 | 1000 0000~0111 1111 | -128~127 |
16 位补码的范围 | 1000 0000 0000~0111 1111 1111 | -32768~32767 |
32 位补码的范围 | 1000 0000 0000 0000~0111 1111 1111 1111 | -2147483648~2147483647 |
16 进制
逢十六进一,是二进制的简写形式。每一位表示二进制的 4 位。
十六进制数字前面需要加 0x
如 0xAC5F