由Python想起的各种进制数

    前几天在学习Python里的一个函数string的方法atoi(),偶然想起了进制的相关知识。所以觉得应该复习一下。

    在计算机中进制有10进制,2进制,8进制,和16进制。那么他们之间是如何定义和转换的呢?最为我们熟悉的进制应该是10进制,也就是逢10进1的制度,从0-9一共10个数,逢10就进位了。2进制呢?2进制的数只有0和1两个,也就逢2进1的制度,8进制亦是如此。但16进制有着稍微特殊的表示,它不像其他进制完全是数字构成,它加入了字母。所以16进制的所有数是这样的 数字部分是0-9,超过9以后就是A(10)、B(11)、C(12)、D(13)、E(14)、F(15),超过F,也就是逢16,这时候我们就要向前进一位了。
    在计算机中,将2进制数所包含的位数成为比特(bit)数,1比特表示一为2进制数。

    在解释这些进制之间的转换的时候,有必要提一个词语 “权”的概念。那么什么是权呢?权是用来表示某一数位上所代表的实际数值。举例说明一下:十进制数:425.8  这里的4的位置是百位,那么它也可以这么表示4*100,2的位置是10位,那么它可以这么表示2*10,5是个位,可以表示为5*1,8是小数位表示成8*-1。数在不同的位置上表示不同的实际数值,它们就必须乘上一个因子,即 100、10 ……那么这里的100,10,1,-1就叫做权,10进制的权就是10。所以10进制的425.8就可以这样表示:



接下来说下进制的转换,首先说下2进制和10进制之间的转换。
2进制转换成10进制的方法就是“按权相加”,即把给定的2进制数,按权展开,然后相加得到相应10进制的数。举例说明一下:








10进制转2进制,如果带小数,那么整数和小数部分要分别转换,然后在合起来。对于整数部分的转换方法是这样:“除2取余,逆序排列”,即用10进制数除以2,得到一个商和一个余数,在将得到的商继续除以2,……一直除下去,直到商为0为止。小数部分是“乘2取整,顺序排列”,即用小数部分乘以2,将的出的数的整数部分取处,余下小数继续乘以2,直到小数部分为0,或达到要求的精度为止。下面举例说明一下:
  


-
  



在说一下任意进制数和十进制数的转换:这种转换同二进制转换为十进制数类似,即:‘按权相加’如下面的图示:









十进制转任意进制数的方法,类似与十进制数转二进制数,整数部分和小数部分要分别转换,整数部分是:“除以基数,取其余数,倒序排列”。小数部分是“乘以基数,取其整数,顺序排列”。
如下图示:






二进制与八进制的转换:二进制的基数为2,八进制的基数为8,二者之间有如下的关系:2的三次方等于8,这就决定了一位八进制数与三位二进制数是完全对应的,对应关系如下:




所以二进制转八进制的方法是“三位合一位,按权相加”,即以小数点为界,整数部分从右到左,每三位为一组分组,最高有效位数不足三位补0,小数部分从左到右,每三位一组分组,最低有效数位不足补0,将每一组三位二进制数按权展开后相加就得到对应的八进制数,八进制转换成二进制的方法是“一位拆三位,依权定码”。如下所示:





二进制和十六进制的转换:二进制的基数2和十六进制的基数16存在着2的4次方等于16的关系,所以二进制与十六进制之间也是完全对应的,对应关系如下:





二进制数转换为十六进制的方法是:“四位合一位,按权相加”。十六进制转换成二进制数是“一位拆四位,依权定码”。如下所示:





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值