阅读完后:
- 二进制、八进制、十进制、十六进制之间如何相互转换【了解】
前言
前面我们学习了整型字面量的二进制、八进制、十六进制转为十进制的示例。
在本章,我们开始更深入的学习二进制、八进制、十进制、十六进制之间的转换。
二进制转八进制
转换技巧:
- 每 3 位二进制数相当于 1 个八进制数
- 从后面往前开始分段,3 位 1 段,最前面不足 3 位的添 0
1011001101 就可以分成 4 个 3 位的 001,011,001,101 ,计算方式如下:
001 计算得出: 0*
+0*
+1*
= 1
011 计算得出: 0*
+ 1*
+ 1*
= 3
001 计算得出: 0*
+ 0*
+ 1*
= 1
101 计算得出: 1*
+ 0*
+ 1*
= 5
最后把每段计算出的数串联起来 ,最后得出 1315,所以二进制 1011001101 得到的八进制数就是 1315。
示例代码如下:
// 二进制数转八进制数结果
int myInt1 = 0b001011001101; // 计算出八进制数:1315
int myInt2 = 01315; // 显示八进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
二进制转十进制
转换技巧:
- 从右往左数,第几位就乘以 2 的几次方
1011001101 转十进制不需要分段,直接进行计算,计算方式如下:
1*
+ 0*
+ 1*
+ 1*
+ 0*
+ 0*
+ 1*
+ 1*
+ 0*
+ 1*
最后把每个数相加起来(1 + 0 + 4 + 8 + 0 + 0 + 64 + 128 + 0 + 512 = 717 ),最后得出 717,所以二进制 1011001101 得到的十进制数就是 717。
示例代码如下:
// 二进制数转十进制数结果
int myInt1 = 0b001011001101; // 计算出十进制数:717
int myInt2 = 717; // 显示十进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
二进制转十六进制
转换技巧:
- 每 4 位二进制数相当于 1 个十六进制数
- 从后面往前开始分段,4 位 1 段,最前面不足 4 位的添 0
1011001101 就可以分成 3 个 4 位的 0010,1100,1101 ,计算方式如下:
0010 计算得出: 0*
+ 0*
+ 1*
+ 0*
= 2
1100 计算得出: 1*
+ 1*
+ 0*
+ 0*
= C
1101 计算得出:1*
+1*
+0*
+1*
= D
最后把每段计算出的数串联起来 ,最后得出 2CD,所以二进制 1011001101 得到的十六进制数就是 2CD。
示例代码如下:
// 二进制数转十六进制数结果
int myInt1 = 0b001011001101; // 计算出十六进制数:2CD
int myInt2 = 0x2CD; // 显示十六进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
八进制转二进制
转换技巧:
- 从左到右,依次把每一位转化为二进制
- 二进制转八进制时,每 3 位二进制数相当于 1 个八进制数
- 八进制转二进制是,相反
- 每 1 位八进制数,相当于 3 个二进制数
- 去除最前面的 0
八进制数 1315 就可以分成 4 个 3 位的二进制数 xxx,xxx,xxx,xxx 计算方式如下:
1 计算得出:001
3 计算得出:011
1 计算的出:001
5 计算得出:101
最后把每段计算出的数串联起来 ,最后得出 001011001101,所以八进制数 1315 得到的二进制数就是 001011001101。
示例代码如下:
// 八进制数转二进制数结果
int myInt1 = 01315; // 计算出二进制数:001011001101
int myInt2 = 0b001011001101; // 显示二进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
八进制转十进制
转换技巧:
- 从右往左数,第几位就乘以 8 的几次方
八进制数 1315 转十进制,直接进行计算,计算方式如下:
5*
+ 1*
+ 3*
+ 1*
最后把每个数相加起来(= 5 + 8 + 192 +512 = 717 ),最后得出 717,所以八进制数 1315 得到的十进制数就是 717。
示例代码如下:
// 八进制数转十进制数结果
int myInt1 = 01315; // 计算出十进制数:717
int myInt2 = 717; // 显示十进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
八进制转十六进制
转换技巧:
- 第一步:将八进制转换为二进制
- 第二步,将二进制转换为十六进制
八进制转十六进制数没有直接转换的方法,需要过渡转换,将八进制转换为二进制或十进制(比较繁琐),然后再转换为十六进制。
最简单的做法是,通过八进制转换为二进制,然后在转换为十六进制。(八进制转二进制已讲,二进制转换十六进制已讲)。
十进制转二进制
转换技巧:
- 将十进制数除以 2,取余,直到得到结果 0 为止
将十进制数 717 转换二进制数,计算方式如下:
717 除以 2 得 358,余 1
358 除以 2 得 179,余 0
179 除以 2 得 89,余 1
89 除以 2 得 44,余 1
44 除以 2 得 22,余 0
22 除以 2 得 11,余 0
11 除以 2 得 5,余 1
5 除以 2 得 2,余 1
2 除以 2 得 1,余 0
1 除以 2 得 0,余 1
将余数倒排串联起来,从得到余数为 1 开始算起,就可得 1011001101,所以十进制 717 得到的二进制数就是 1011001101。
十进制转八进制
转换技巧:
- 将十进制数除以 8,取余,直到得到结果 0 为止
将十进制数 717 转换八进制数,计算方式如下:
717 除以 8 得 89,余 5
89 除以 8 得 11,余 1
11 除以 8 得 1,余 3
1 除以 8 得 8,余 1
将余数倒排串联起来,从得到余数为 1 开始算起,就可得 1315,所以十进制 717 得到的八进制数就是 1315。
十进制转十六进制
转换技巧:
- 将十进制数除以 16,取余,直到得到结果 0 为止
将十进制数 717 转换十六进制数,计算方式如下:
717 除以 16 得 44,余 13
44 除以 16 得 2,余 12
2 除以 16 得 0,余 2
将余数倒排串联起来,从得到余数为 1 开始算起,十六进制的位数超过 9 时,就需要使用英文字母代替,(10-A,11-B,12-C,13-D,14-E,15-F),最后转换就可得 2CD,所以十进制 717 得到的十六进制数就是 2CD。
十六进制转二进制
转换技巧:
- 从左到右,依次把每一位转化为二进制
- 二进制转十六进制时,每 4 位二进制数相当于 1 个十六进制数
- 十六进制转二进制是,相反
- 每 1 位十六进制数,相当于 4 个二进制数
- 去除最前面的 0
十六进制数 2CD 就可以分成 3 个 4 位的二进制数 xxxx,xxxx,xxxx,计算方式如下:
2 计算得出:0010
C(12) 计算得出:1100
D(13) 计算的出:1101
最后把每段计算出的数串联起来 ,最后得出 001011001101,所以十六进制数 2CD 得到的二进制数就是 001011001101
示例代码如下:
// 十六进制数转二进制数结果
int myInt1 = 0x2CD; // 计算出二进制数:001011001101
int myInt2 = 0b001011001101; // 显示二进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
十六进制转八进制
转换技巧:
- 第一步:将十六进制转换为二进制
- 第二步,将二进制转换为八进制
十六进制转八进制数没有直接转换的方法,需要过渡转换,将十六进制转换为二进制或十进制(比较繁琐),然后再转换为八进制。
最简单的做法是,通过十六进制转换为二进制,然后在转换为八进制。(十六进制转二进制已讲,二进制转换八进制已讲)。
十六进制转十进制
转换技巧:
- 从右往左数,第几位就乘以 10 的几次方
示例
十六进制数 2CD 转十进制,直接进行计算,计算方式如下:
13*
+ 12*
+ 2*
最后把每个数相加起来(13 + 192 + 512 = 717 ),最后得出 717,所以十六进制数 2CD 得到的十进制数就是 717。
示例代码如下:
// 十六进制数转十进制数结果
int myInt1 = 0x2CD; // 计算出十进制数:717
int myInt2 = 717; // 显示十进制数
System.out.println(myInt1); // 输出:717
System.out.println(myInt2); // 输出:717
在本章我们学习了:
- 二进制分别转八进制、十进制、十六进制
- 八进制分别转二进制、十进制、十六进制
- 十进制分别转二进制、八进制、十六进制
- 十六进制分别转二进制、八进制、十进制
接下来,我们开始学习 Java 的数值类型相互转换:Java零基础24-Java的数值类型相互转换