!!!进制是程序员的必备技能!!!
Java 中 对于整数有四种表示方式:
0
, 1
满 2 进 1 以 0b
/0B
开头表示0~7
,满 8 进 1,以数字 0
开头表示0~9
,满 10 进 10~9 A~F
,满 16 进 1,以 0x
/0X
开头表示 (字母不区分大小写)// 二进制 int bin_ = 0b11011; // 转换为十进制表示 27 // 八进制 int oct_ = 011011; // 转换为十进制表示 4617 // 十进制 int dec_ = 11011; // 十进制 11011 就是 11011 // 十六进制 int hex_ = 0x11011; // 转换为十进制表示 69649
其他进制转 十进制
的公式如下:
从最低位开始,每位乘 进制数
^位数-1
的和
如上二进制的 11011
套用上面的公式,转换十进制过程如下:
11011
= 1 * 2^(1-1) + 1 * 2^(2-1) + 0 * 2^(3-1) + 1 * 2^(4-1) + 1 * 2^(5-1)
11011
= 1 + 2 + 0 + 8 + 16
11011
= 27
其他进制转 十进制
套用方式一样
这是我自己对二进制的记法:
把每位对应的数字记下来,例如 11111111
每位对应的分别是上一位的2次方 128 64 32 16 8 4 2 1
用我的记法把 10010110
根据上面每位对应的数字 128
+ 0
+ 0
+ 16
+ 0
+ 4
+ 2
+ 0
我们只需要求和就行了,不需要计算 ^位数 - 1的结果了,因为 2 的次方是最好记的,也是最常用的。
公式:将该数不断除以进制数
,直到商为 0,然后将每步得到的余倒过来
二进制
转 八进制
的公式如下:
从最低位开始每三位一组,每组转成对应的八进制数
如:0b11100101
拆分成每三个一组为 11
100
101
转成对应的八进制
就是 3
4
5
转换结果就是:345
二进制
转 十六进制
的公式如下:
从最低位开始每四位一组,每组转成对应的十六进制数
如:0b1110010110
拆分为四位一组就是 11
1001
0110
转换为对应的十六进制就是 3
9
6
转换结果就是 396
规则:将八进制
数每一位,转换成对应的一个三位的 二进制
数即可。
例如 0372
分别对应011
111
010
结果 0b000011111010
规则:将十六进制
数每一位,转换成对应的一个四位的 二进制
数即可。
例如 0x23b
分别对应 0010
0011
1011
结果:0b001000111011