我们平时使用的数字大多是十进制,也就是满 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
