进制介绍
进位制分为我们熟悉的十进制
二进制
八进制
十六进制
二十进制
六十进制
等等
十进制
基数为10的计数系统,最常用的进制方式,视为因为人类具有十根手指而产生。
数码
:0,1,2,3,4,5,6,7,8,9
规则
:逢十进一,借一当十
位权
:10^n
二进制
基数为2的计数系统,源于计算机的诞生,主要应用于计算机领域。
数码
:0,1
规则
:逢二进一,借一当二
位权
:2^n
八进制
基数为8的计数系统,据说源于 人手指相间的八个间隔进行计数
数码
:0,1,2,3,4,5,6,7
规则
:逢八进一,借一当八
位权
:8^n
十六进制
基数为16的计数系统,因其与二进制互转的方便性,主要用于计算机领域。
数码
:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
规则
:逢十六进一,借一当十六
位权
:16^n
六十进制
基数为60的计数系统,目前常用在计时系统和角度中,如时间的60秒为一分钟、60分为1小时;360°的1°为60角分,1角分为60角秒。
数码:0,1,2…59,60
六十进制细节忽略
什么是数码?
就是能够表示一个进制数的可能组成元素,如10进制的456, 分别由4、5、6这三个元素组成,我们就称4、5、6是10进制的数码;2进制的1010, 分别由 1 和 0 两个数码表示。
什么是基数?
基数在数学上表示一个集合的元素个数,进制中表示该进制的数码的个数。如2进制有两个数码 1 和 0,则2进制的基数为2。
什么是位权?
数码所在进制数位置所对应的单位值,称之为位权(位置的权重)。如10进制的1234,4所在位置的位权为 10^0 (1),3所在位置的位权为10^1 (10),2所在位置的位权为10^2 (100),即位置N的位权为10^N,对于进制i,即为 i^n
常用进制之间的转换
(1)2进制转10进制
以小数点为界(如1101.110),将拆分成整数部分(1101)和小数部分(110)
计算整数部分
从最低位的位置(从右向左)开始,位置依次列为1,2,3…n,将第n位的数(0或1)乘以2的n-1次方,依次相加即为10进制数。
举例
:
以整数部分 1101 为例,位置1对应数码 1,位置2对应数码0,位置3对应数码1,位置4对应数码1.
计算
:1
1101(2) = 1*2^0 + 0*2^1 + 1*2^2 + 1*2^3 = 13(10)
计算小数部分
小数位的计算与整数位类似,有两点区别:
(1)小数位计算的方向从左向右开(高位到低位)
(2)小数位的位权是:
1 | i^{-n} |
举例
:
以小数部分110为例,位置1对应数码1,位置2对应数码1,位置3对应数码0
计算
1
110 = 1 * 2^{-1} + 1 * 2^{-2} + 0 * 2^{-3} = 0.75
综上: 1101.110二进制转换为十进制为:13.75
(2)2进制转换为16进制
每四位二进制码对应一位16进制码,为什么呢?
16进制的进制码是0,1,2,,,9,A,,,,F(其实就是0…15),那么四位二级制是多少呢?
最小0000为0,最大1111为15。四位二进制刚好等于一位16进制。
以小数点为界,整数部分,从右向左一次分为每四位一组,不够四位的在左边补0,小数部分将二进制数从左向右每4位一组,不足四位的,右边补0。将每四位二进制转为10进制数,然后将计算结果拼接
一起即可。
举例
:
11011.11 转为 4位一组 : 0001 1011 . 1100
计算
0001(1) 1011(11).1100(75) = 1B.75 (11在16进制中用B表示)
(3)10进制转为2进制
以小数点为界(75.3125),拆分为整数部分(75)和小数部分(0.3125)
整数部分
整数(75)部分除以2,取出其商和余数(32, 1),继续用上一次的商(32)除以2, 依次进行直至商小于2为止。然后把上面得到的所有余数,按照计算得出的先后顺序,依次表示从右向左排列,表示二进制的整数部分
计算
:
75 -> (37, 1) -> (18, 1) -> (9, 0) -> (4, 1) -> (2, 0) -> (1, 0) = 1001011
要点
:
(1)计算余数的顺序跟二级制数码的排列顺序(左向右)相反,先计算出的余数位权最小
(2)除2运算直到商小于2为止,且最后一次小于2的商作为二进制数码位权最大的一位
小数部分
小数部分先乘2,取出计算的整数(如果整数为0则取0),整数部分置0,再上次得出的小数部分继续乘2,一次进行直到小数部分为0为0为止。最终将小数部分计算出的所有整数(1或0)按照计算的先后顺序,从左到右依次排列,作为二进制数。
计算
0.3125(10) -> (0.625, 0) -> (1.25, 1) -> (0.5, 0) -> (1.0, 1) = 0.0101(2)
综上,75.3125 十进制转二进制结果未 1001011.0101
(4)10进制转16进制
与10进制转二进制的运算完全一样,只是把被除数2换成16
如十进制数 93.3125
整数部分
93(10) -> (5, 13) = 5D(16)
小数部分
0.3125 -> (5.0, 0) = 0.5(16)
综上,93.3125 十进制转16进制结果为:5D.5
(5)16进制转2进制
16进制转2进制比较简单,与2进制转16进制的方式相反,将16进制的每一位数,以10进制转2进制的方式,拆分成4位2进制数,不足四位的在左边补0
如将5D.5转为2进制
计算
将5D.5拆分为3个数,分别进行计算(将每个数假设看做10进制数,),如:5,D(13),5
5(10) -> 0101(2)
13(10) -> 1101(2)
5(10) -> 0101(2)
将三个10进制转2进制数计算的结果拼接即为16进制转2进制的计算结果
综上,16进制转二进制结果为:101 1101.0101
(6)16进制转10进制
16进制转10进制,与2进制转10进制方式相同,只是计算时二进制的位权为 2^n,16进制的位权为 16^n
如将5D.5转为10进制
计算
1 | 5D.5(16) = 5 * 16^1 + 13 * 16^0 + 5 * 16^{-1} = 93.3125(10) |