进制的转换(十进制与二、八、十六进制的互换和八、十六进制与二进制的互换,包括小数的转换)

160 篇文章 11 订阅
152 篇文章 20 订阅

提示

二进制 0,1

八进制 0,1,2,3,4,5,6,7

十进制 0,1,2,3,4,5,6,7,8,9

十六进制 0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)

注意

十六进制中10~15是用字母来表示的,且字母可为大小写,还可以混用。例如十六进制中的10,可以用A或a来表示;1011可以用AB或Ab来表示。

一、十进制与二、八、十六进制的互换

1、十进制->八进制

用8连续除十进制数整数部分,直到商为0,逆序排列余数即可得到

用8连续乘十进制数小数部分 ,直到的小数为0或达到所要求的精度为止,正序排列积的整数部分即可得

举例

假设十进制的一个数为83.12

83÷8=10 余数为3

10÷8=1 余数为2

1÷8=0 余数为1

0.12*8=0.96 整数部分为0 小数部分为0.96

0.96*8=7.68 整数部分为7 小数部分为0.68

0.68*8=5.44 整数部分为5 小数部分为0.44

0.44*8=3.52 整数部分为3 小数部分为0.52

.

.

.

省略,大家可以自己进行接下来的运算,因为举例,精度就短些。

(十)83.12=(八)123.0753

2、十进制->十六进制

用16连续除十进制数整数部分,直到商为0,逆序排列余数即可得到

用16连续乘十进制数小数部分 ,直到的小数为0或达到所要求的精度为止,正序排列积的整数部分即可得

举例

假设十进制的一个数为299.12

299÷16= 18 余数为B(11)

18÷16=1 余数为2

1 ÷16=0 余数为1

0.12*16=1.92 整数部分为 1 小数部分为0.92

0.92*16=7.68 整数部分为E(14) 小数部分为0.72

0.72*16=5.44 整数部分为B(11) 小数部分为0.52

.

.

.

(十)299.12=(十六)12b.1eb

3、十进制->二进制

用2连续除十进制数整数部分,直到商为0,逆序排列余数即可得到

用2连续乘十进制数小数部分 ,直到的小数为0或达到所要求的精度为止,正序排列积的整数部分即可得

举例

假设十进制的一个数为3.25

3÷2= 1 余数为1

1 ÷2=0 余数为1

0.25*2=0.5 整数部分为 0 小数部分为0.5

0.5*2=1 整数部分为1 小数部分为0

(十)299.12=(二)11.01

总结

其实十进制转二、八、十六进制,大致是一样的,同样的二、八、十六进制转十进制也是这样的

4、二、八、十六进制->十进制

把二进制数(或八进制或十六进制数)按位权形式展开多项式和的形式,求其最后的和

举例

假设二进制数为1111

1*2的三次方 等于8

1*2的二次方 等于4

1*2的一次方 等于2

1*2的零次方 等于1

8+4+2+1=15

即(二)1111=(十)15

注意 最大N此方为总的位数-1,此后次方依次递减,直到为0次方。如二进制1111,最大N次方为 4-1=3,此后依次递减,最后为0次方。八进制、十六进制也是如此

假设八进制数为123

1*8的二次方 等于64

2*8的一次方 等于16

3*8的零次方 等于3

64+16+3=83

即(八)123=(十)83

假设十六进制数为12B

1*16的二次方 等于256

2*16的一次方 等于32

11*16的零次方 等于11

256+32+11=299

即(十六)12B=(十)299

二、八、十六进制与二进制的互换

1、间接法

把二进制转为十进制再到八进制或十六进制,大家可以看我上面的进制的转换,自己试试。

2、直接法

定理1:将三位的二进制转换成一位八进制,相反的,将一位八进制转三位的二进制;

定理2:将四位的二进制转换成一位十六进制,相反的,将一位十六进制转四位二进制

定理3:分位时如位数不够,整数部分在最左边补0,小数部分在最右边补0;

举例:

二进制转八进制、十六进制

假设二进制数为1011001.1101011

进行分位 010 |101.101|010 |为分隔符

剩下的就跟二进制转十进制一样

把每三位看为整体,计算出值,最后连接就行

如010

0*2的二次方 等于0

1*2的一次方 等于2

0*2的零次方 等于0

因此 010=2

同样计算出101(值为5),最后进行连接

(二)10101.10101 = 010 |101.101|010 =(八) 25.52

同样,只是把每四位看为整体,计算出值,最后连接就行

(二)11011011.11011111 =1101|1011.1101|1111 = (十六)DB.DF

而八进制、十六进制转二进制,反过来就行

(十六)D|B.D|F=1101|1011.1101|1111 =(二)11011011.11011111

总结

八为2的三次方,因此需二进制为3位;十六为2的四次方,因此需二进制为4位,所以32进制就应该需二进制为5位,即N进制中,N为2的x次方,该进制就需要二进制x位.

如有错误,请指出

如有侵权,请联系删除

写在最后

今天就到这里了哈~

后续我还会发布更多的项目源或者学习资料,希望大家可以持续关注,有什么问题可以给我留言。

不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

【值得关注】我的【C/C++源码资料学习群】点击进入

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值