进制也就是进位计数制,是人为定义的带进位的计数方法,几进制的含义就是逢几进一。
进制基数 | 前缀 | 示例 |
---|---|---|
二进制 | 0b 0B | 0b11 --> 2+1 = 3 |
八进制 | 0o 0O 0 | 0o11 --> 8+1 = 9 |
十进制 | 无前缀 | 11 = 11 |
十六进制 | 0x 0X | 0x11 --> 16+1 = 17 |
十进制:0 1 2 3 4 5 6 7 8 9 ==> 10
二进制:0 1 ==> 0b10
八进制:0 1 2 3 4 5 6 7 ==> 0o10
十六进制:0 1 2 3 4 5 6 7 8 9 a b c d e f ==> 0x10
不同语言中的数值常量表示差异
- JavaScript/Python:八进制数值的前缀可以为 0 0o 0O 三种皆可。
- Java/C:八进制数值只能用一种前缀 0 ,不能用 0o 0O ,否则会报错
计算机底层最终只能够识别0和1,不论多么复杂的表达式都只会进行二进制加法运算。
1、二进制与八进制
一位8进制对应3位2进制
二进制:0b 1 010 010 100 101 010
八进制:0 1 2 2 4 5 2
2、二进制与十六进制
一位16进制对应4位2进制
二进制: 0b 1010 0101 0010 1010
十六进制:0x a 5 2 a
3、二进制与十进制
二进制:0b 1010010100101010
十进制: 2^15 + 2^13 + 2^10 + 2^8 + 2^5 + 2^3 + 2^1
32768 + 8192 + 1024 + 256 + 32 + 8 + 2
= 42282
十进制: 42282
二进制: 42282/2 0
21141/2 1
10570/2 0
5285/2 1
2642/2 0
1321/2 1
660/2 0
330/2 0
165/2 1
82/2 0
41/2 1
20/2 0
10/2 0
5/2 1
2/2 0
1
从下往上连接起来得到:
0b 1010010100101010
4、十进制与八进制
十进制: 42282
八进制: 42282/8 2
5285/8 5
660/8 4
82/8 2
10/8 2
1
从下往上连接起来得到:
0 122452
八进制:0 122452
十进制: 1*8^5 + 2*8^4 + 2*8^3 + 4*8^2 + 5*8^1 + 2*8^0
32768 + 2*4096 + 2*512 + 4*64 + 5*8 + 2
= 42282
5、十进制与十六进制
十进制: 42282
十六进制: 42282/16 10
2642/16 2
165/16 5
10
从下往上连接起来得到:
0x a52a
十六进制:0x a52a
十进制: 10*16^3 + 5*16^2 + 2*16^1 + 10*16^0
10*4096 + 5*256 + 2*16 + 10
= 42282
6、八进制与十六进制
八进制: 0 1 2 2 4 5 2
二进制: 0b 001 010 010 100 101 010
二进制: 0b 1010 0101 0010 1010
十六进制:0x a 5 2 a