进制之间的转换

进制也就是进位制,我们常用到的就是二进制、八进制、十进制、十六进制。

二进制:由0,1两个自然数组成,运算规律就是逢二进一。

八进制:由0~7八个自然数组成,运算规律就是逢八进一。

十进制:由0~9十个自然数组成,运算规律就是逢十进一。

十六进制:有0~9个自然数和A~F六个大写字母组成。其中6个大写字母分别表示10、11、12、13、14、15。运算规律就是逢十六进一。

为了更好的区分各类进制,通常在编写的时候用该进制来做结尾。

例如十进制数2012,那么十六进制中可以写成(7DC)16,八进制可以写成(3734)8,二进制可以写成(011111011100)2

十进制转为二进制

十进制转二进制分为整数部分和小数部分

整数部分可以用除以2获取余数的方法。得到的余数就是该位权上的数,得到的商又除以2,如此循环,直至商为0,最后从最后的余数向前读数。

例如十进制数2012

换算过程

2012 / 2 = 1006 余 0

1006 / 2 = 503 余 0

503 / 2 = 251 余 1

251 / 2 = 125 余 1

125 / 2 = 62 余 1

64 / 2 = 31 余 0 

31 / 2 = 15 余 ·1

15 / 2 = 7 余 1

7 / 2 = 3 余 1

3 / 2 = 1 余 1

1 / 2 = 0 余 1

商为0,计算完毕,最后从最后的余数向前读数,即11111011100

小数部分可以用小数部分乘以2,然后取整数,剩下的小数继续乘以2,如此循环直至小数部分为0,如果小数部分都不为0,那么就要根据要求,如果后面一位是0,那么则取舍,如果是1,那么则进位1,最后从前面得到的整数往后读。

例如十进制0.86

换算过程

0.86 * 2 = 1.72 则整数为 1 小数为0.72

0.72 * 2 = 1.44 则整数为1 小数为0.44

0.44 * 2 = 0.88 则整数为0 小数为0.88

0.88 * 2 = 1.76 则整数为1 小数为0.76

0.76 * 2 = 1.52 则整数为1 小数为0.52

0.52 * 2 = 1.04 则整数是1 小数是0.04

0.04 * 2 = 0.08 则整数是0 小数是0.08

0.08 * 2 = 0.16 则整数是0 小数是0.16

0.16 * 2 = 0.32 则整数是0 小数是0.32

0.32 * 2 = 0.64 则整数是0 小数是0.64

…………

依次下去

最后结果为0.1101110000……

同理,十进制转八进制、十六进制也是如此,只不过是除以8、16。

二进制转八进制

三位二进制表示一位八进制。如2^3 = 8

二进制转八进制可以以二进制的小数点为分界点,整数部分向左取以三位为一个单元,小数部分向右取以三位为一个单元,然后计算分别得到的三位,计算得到的结果就是一位八进制,小数点的位置不变。如果无法筹足三位,那么整数部分则可以在最高位权(即整数的最左边)添加0补足,小数点部分则在最右边部分添0补足。

例如二进制 (11101001.100011)2

三位取一 整数部分 011 101 001  小数部分 100 011

0*2^2 + 1*2^1 + 1*2^0 = 3  1*2^2 + 0*2^1 + 1*2^0 = 5  0*2^2 + 0*2^1 + 1*2^0 = 1

所以整数部分为351

1*2^2 + 0*2^1 + 0*2^0 = 4  0*2^2 + 1*2^1 + 1*2^0 = 3 

所以小数部分是43

最后八进制的结果是(351.43)8

二进制转十进制

对于N进制来说,整数部分的第 i 位的位权为N^(i - 1),而小数部分第 j 位的位权则为N^(-j),其中 i 以1开始

可以按权展开求和

例如二进制(1011.01)2

横向展开:1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 + 0*2^-1 + 1*2^-2 = 11.25

二进制转十六进制

四位二进制表示一位十六进制,如2^4=16

方法和二进制转八进制类似,区别的是十六进制是以四位为一个单元。

例二进制(11101001.100011)2

四位取一 整数部分 1110 1001  小数部分 1000 1100

最后得到的十六进制的结果是(E9.8C)16

八进制转二进制

因为八进制是由0~7的数字组成,且一位八进制为三位二进制,所以可以把一位八进制拆成三位二进制

而二进制上位权对应的权值又是这样

2^72^62^52^42^32^22^12^0
1286432168421

八进制二进制

0--------000

1--------001

2--------010

3--------011

4--------100

5--------101

6--------110

7--------111
例八进制25,得到的二进制为(10101)2

八进制434,得到的二进制为(100011100)2

八进制转十进制

可以按权展开求和

例如八进制(1011.01)8

横向展开:1*8^3 + 0*8^2 + 1*8^1 + 1*8^0 + 0*8^-1 + 1*8^-2 = 521.215625

八进制转十六进制

一般不直接转换,可以先转换为二进制。然后在转换为需要的进制

十六进制转二进制

因为十六进制是由0~9的数字和A~F组成,且一位十六进制为四位位二进制,所以可以把一位十六进制拆成四位二进制

十六进制二进制

0--------0000

1--------0001

2--------0010

3--------0011

4--------0100

5--------0101

6--------0110

7--------0111

8--------1000

9--------1001

A--------1010

B--------1011

C--------1100

D--------1101

E--------1110

F--------1111

例如9EF,则对应的二进制则为100111101111

十六进制转十进制

按权展开求和,类似八进制转十进制

ok,若有不对的地方,请各位指出改正,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值