Java零基础23-Java的二进制、八进制、十进制、十六进制之间的转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shilishili/article/details/88395540

阅读完后:

  • 二进制、八进制、十进制、十六进制之间如何相互转换【了解】

前言

前面我们学习了整型字面量的二进制、八进制、十六进制转为十进制的示例。
在本章,我们开始更深入的学习二进制、八进制、十进制、十六进制之间的转换。

二进制转八进制

转换技巧:

  • 每 3 位二进制数相当于 1 个八进制数
  • 从后面往前开始分段,3 位 1 段,最前面不足 3 位的添 0

1011001101 就可以分成 4 个 3 位的 001,011,001,101 ,计算方式如下:
001 计算得出: 0* 2 2 2^2 +0* 2 1 2^1 +1* 2 0 2^0 = 1
011 计算得出: 0* 2 2 2^2 + 1* 2 1 2^1 + 1* 2 0 2^0 = 3
001 计算得出: 0* 2 2 2^2 + 0* 2 1 2^1 + 1* 2 0 2^0 = 1
101 计算得出: 1* 2 2 2^2 + 0* 2 1 2^1 + 1* 2 0 2^0 = 5

最后把每段计算出的数串联起来 ,最后得出 1315,所以二进制 1011001101 得到的八进制数就是 1315。

示例代码如下:

// 二进制数转八进制数结果
int myInt1 = 0b001011001101;	// 计算出八进制数:1315
int myInt2 = 01315;  			// 显示八进制数

System.out.println(myInt1);  	// 输出:717
System.out.println(myInt2);  	// 输出:717

二进制转十进制

转换技巧:

  • 从右往左数,第几位就乘以 2 的几次方

1011001101 转十进制不需要分段,直接进行计算,计算方式如下:
1* 2 0 2^0 + 0* 2 1 2^1 + 1* 2 2 2^2 + 1* 2 3 2^3 + 0* 2 4 2^4 + 0* 2 5 2^5 + 1* 2 6 2^6 + 1* 2 7 2^7 + 0* 2 8 2^8 + 1* 2 9 2^9

最后把每个数相加起来(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* 2 3 2^3 + 0* 2 2 2^2 + 1* 2 1 2^1 + 0* 2 0 2^0 = 2
1100 计算得出: 1* 2 3 2^3 + 1* 2 2 2^2 + 0* 2 1 2^1 + 0* 2 0 2^0 = C
1101 计算得出:1* 2 3 2^3 +1* 2 2 2^2 +0* 2 1 2^1 +1* 2 0 2^0 = 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* 8 0 8^0 + 1* 8 1 8^1 + 3* 8 2 8^2 + 1* 8 3 8^3

最后把每个数相加起来(= 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* 1 6 0 16^0 + 12* 1 6 1 16^1 + 2* 1 6 2 16^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的数值类型相互转换

猜你喜欢

转载自blog.csdn.net/shilishili/article/details/88395540
今日推荐