技术思绪摘录旅行
在我们某些计算中,需要我们将进制进行换算,比如十进制转二进制,二进制转八进制,八进制转十六进制,在不同的场景,需要不同的进制,二进制表示一个很大的数可能会很长,不好操作和识别,往往需要我们将二进制转换为较大的进制,本文将记录任意进制间转换的方法。

首先以十进制作为中转,可以将任意进制的数转换成十进制,再转成其他进制,这是一个很好的方法。

1、任意进制转十进制:按权展开法

具体操作方式为:将R进制数的每一位数值用R的k次方形式表示,即幂的底数是R,指数是k,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该数和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1.

例如二进制10100.01=1x24+1x22+1x2-1

10100.01那么小数点左边有5位,离小数点最近的开始,数码依次是0、1、2、3、4;小数点右边有两位,离小数点最近的开始,数码依次是0、1,加1之后就是1、2。

实际10100.01转成表达式从左往右依次就是:1x24+0x23+1x22+0x21+0x20+0x2-1+0x2-2

0乘以任何数得0,所以最终就是1x24+1x22+1x2-1


例如七进制604.01=6x72+4x70+1x7-2

举一反三,604.01的R=7,k从左往右依次是:2、1、0,-1,-2

实际604.01=6x72+0x71+4x70+0x7-1+1x7-2=6x72+4x70+1x7-2


2、十进制转任意进制:短除法

具体操作方式为:一个十进制的数除以R进制得到一个商和第一个余数,再次将商除以R进制,得到一个商和第二个余数,以此类推,最终商0,将余数依次逆序连起来,就是R进制的表示。

例如94转2进制

次数被除数除数余数
1
942470
2
472231
3232111
4
11251
5
5221
6
2210
7
1201

得到余数逆序排列就是1011 110,所以94的2进制表示就是1011 110


3、扩展知识点:二进制转八进制、十六进制

八进制:0、1、2、3、4、5、6、7 表示

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


二进制转八进制:三段式

例如10001110转成八进制,首先将二进制数从低位到高位,三个一段

得到10 001 110,最高的只剩两位了,补0就行了

得到010 001 110,每一段有三位,底数R为当前进制,每段k次方从低到高依次是0、1、2

从左往右所以得到三个表达式:0x22+1x21+0x20,0x22+0x21+1x20,1x22+1x21+0x20

从左往右计算出来得到三个数:2、1、6

那么这个八进制数就是216


二进制转十六进制:四段式

例如10001110转成十六进制,首先将二进制数从低位到高位,四个一段

得到1000 1110,最高段不足四位,补0

每段有四位,底数R为当前进制,每段k次方从低到高依次是0、1、2、3

从左到右得到两个表达式:1x23+0x22+0x21+0x20,1x23+1x22+1x21+0x20

计算出来得到两个数:8,14

对应十六进制表,8=8,14=E

所以这个十六进制数就是8E

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫