概览
| 数据类型 | 位数 | 字节 | 范围 |
|---|---|---|---|
| byte | 8位 | 1 | -27~27-1 |
| short | 16位 | 2 | -215~215-1 |
| int | 32位 | 4 | -231~231-1 |
| long | 64位 | 8 | -263~263-1 |
二进制表示
原码
最高位表示符号位,0表示正数,1表示负数
八位二进制
+3
0000 0011
-3
1000 0011
反码
正数:正数的反码与原码相同
负数:除符号位外每一位按位取反
+3
0000 0011
-3
1111 1100
补码
正数:补码与原码相同
负数:除符号位外每一位按位取反,再加1
补码用全0表示0
+3
0000 0011
-3
1111 1101
0
0000 0000
在计算机中,用补码来表示有符号整数
为什么-1?
综上,我们可以知道,补码最高位为1,表示负数,最高位为0,表示正数
以short(16位)为例
补码最小值为:1000 0000 0000 0000=-215
补码最大值:0111 1111 1111 1111 = 215-1
正数范围最高位0作为符号位,因此取不到215,如果取到了也就意味着数值溢出了变成了负数:
1111 1111 1111 1111,负数,为-1