进制的分类
- 十进制(decimal)
- 数字组成:0-9
- 进位规则:满十进一
- 二进制(binary)
- 数字组成:0-1
- 进位规则:满二进一,以0b或0B开头
- 八进制(octal):很少使用
- 数字组成:0-7
- 进位规则:满八进一,以数字0开头表示
- 十六进制
- 数字组成:0-9,a-f
- 进位规则:满十六进一,以0x或0X开头表示,此处的a-f不区分大小写
代码演示:
class BinaryTest{
public static void main(String[] args){
int i1 = 103; //十进制
int i2 = 0b10; //二进制
int i3 = 007; //八进制
int i4 = 0x23a; //十六进制
System.out.println(i1); //103
System.out.println(i2); //2
System.out.println(i3); //7
System.out.println(i4); //570
}
}
进制的换算举例
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 01 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | a或A |
11 | 1011 | 13 | b或B |
12 | 1100 | 14 | c或C |
13 | 1101 | 15 | d或D |
14 | 1110 | 16 | e或E |
15 | 1111 | 17 | f或F |
二进制转十进制
二进制如何表示整数
- 计算机数据的存储使用二进制 补码 形式存储,并且 最高位是符号位
- 正数:最高位是0
- 负数:最高位是1
- 规定
- 正数的补码、反码 和 **原码 **都一样,称为 三码合一
- 负数的补码、反码和原码不一样:
- 负数的 原码 :把十进制转为二进制,然后最高位设置为1
- 负数的 反码 :在原码的基础上,最高位不变,其余位取反(0变1,1变0)
- 负数的 补码 :反码 +1
二进制转十进制:权相加法
针对于byte数据举例来说 byte b1 = 11
举例二进制表示十进制11的补码、反码和原码
高位 低位
0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
---|
最高位是0,所以为正数。
1*2^3
1*2^1
1*2^0
相加得8+2+1=11
举例二进制表示十进制-11的补码、反码和原码
byte b2 = -11
首先表示11的原码
0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
---|
为了表示-11的原码,需要把十进制转换为二进制,然后最高位设置为1,-11的原码如下
1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 |
---|
然后求出-11的反码:在原码的基础上,最高位不变,其余位取反(0变1,1变0),-11的反码如下
1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
---|
然后求-11的补码:反码+1,-11的补码如下
1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
---|
注意:计算机数据的存储使用二进制 补码 形式存储。
十进制转二进制
方法:除2取余的逆