Skip to content

【计算机基础】关于进制

茗辰原
Published date:
1 min read

【计算机基础】关于进制

进制是什么 & 常见的进制

学计算机,那就肯定得懂一样东西——进制(哪怕你没有学过,多少也会懂点)

那进制是啥?

进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。 对于任何一种进制—X进制,就表示每一位置上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

百度百科

进制这玩意,说白了就是我们数数的一个方式,像啥十进制(大家都知道的)就是满十进一

那进制有啥呢?常见的进制有:

上面这些呢,都是我们日常能见到的进制

各个进制的特点

十进制的特点:

二进制的特点:

八进制的特点:

十六进制的特点:

十进制与任意进制之间的互相转换

十进制转任意进制:

十进制转任意进制通常采用除基数,倒取余的办法,具体做法就是:把要转换的数除目标进制数的基数,直到整数变为0为止(下面以43转二进制为例)

43整除2,得21,余1

21整除2,得10,余1

10整除2,得5,余0

5整除2,得2,余1

2整除2,得1,余0

1整除2,得0,余1

把余数从下往上进行记录,得:101011

即43(10) =101011(2)

其它数,其它进制同理,只是十六进制要记得用A-F替换10-15

任意进制转十进制:

任意进制转十进制,一般用把二进制数按权展开、再相加的办法,举个例子(101011转十进制)

12^5 + 02^4 + 12^3 + 02^2 + 12^1 + 12^0

=32 + 0 + 8 + 0 + 2 + 1

=43

即:101011(2) = 43(10)

其它数,其它进制同理,只是十六进制要记得先把A-F替换成相应的10-15,再参与运算

十进制转任意进制(小数):

十进制小数转换成二进制小数采用 “乘2取整,顺序排列”法。下面以十进制转二进制(小数)为例:

具体做法是:先将整数部分与小数部分分开,整数部分直接转换成二进制数,小数部分的转换办法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。(原因是:有很多小数转换成二进制是无限小数,只能取舍,所以一般会设定一个精度,达到精度后就停止计算。)

例如(5.625转为二进制):

分成5、0.625

5转换成二进制是:101,先放一边

0.625*2 = 1.25,取整为1

0.25*2 = 0.5,取整为0

0.5*2 = 1,取整为1

顺着取整,得101

所以0.625(10) = 0.101(2)

所以5.625(10) = 101.625(2)

如果小数部分怎么乘都不为0的话,那就按之前规定的,算到精度要求为止。

例如:0.56转换为二进制(保留小数点后5位)

0.56*2 = 1.12,取整为1

0.12*2 = 0.24,取整为0

0.24*2 = 0.48,取整为0

0.48*2 = 0.96,取整为0

0.96*2 = 1.92,取整为1

……

所以,0.56(10) ≈ 0.10001(2)

任意进制转十进制(小数):

还是以二进制为例,二进制的小数转换为十进制主要是乘以2的负次方,从小数点后开始,依次乘以2的负一次方,2的负二次方,2的负三次方等。比如:0.101转换为十进制:

12^-1 + 02^-2 + 1*2^-3

=½ + 0 + 1/8

=0.625

所以,0.101(2) = 0.625(10)

进制转换的算法实现(Python)

Python 200行代码实现任意进制与十进制之间的互相转化-Abyss-博客

Previous
PDF24工具箱
Next
李跳跳复活版!