进制转换公式

发布时间:2012-12-21 11:37:17   来源:文档文库   
字号:

所谓进制只是一个权重

A进制下,数字实际值是各位数字的"权值*权重"的累加值

"权重"An次方,n代表位数



用公式来表示就是:

abcd = a * A^3 + b * A^2 + c * A^1 + d * A^0



举个直观的例子来说

7进制下,数字 1234 的大小应该是

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

=1*343 + 2*49 + 3*7 + 4*1

=466



当然,得出来的值是十进制下的466

因为其中我们用的运算符号+ *和乘方都是十进制下的运算符号



如果说要7进制转8进制,同样是按照上面的公式来计算,不过所有的运算符号都要换成8进制下的运算符号



同样是以刚才的例子

7 进制的 1234 转换为 8 进制

我们在符号上加上括号(*)(+)(^)来表示8进制的运算符号

注意,下面的计算都是基于8进制的,所以除了第一行之外其它数字都是8进制

1234(7进制)

= 1 (*) 7(^)3 (+) 2 (*) 7(^)2 (+) 3 (*) 7(^)1 (+) 4 (*) 7(^)0

= 1 (*) 527 + 2 (*) 61 + 3 (*) 7 + 4 (*) 1

= 527 + 61 + 25 + 4

= 722



事实上这么计算非常不方便,因为我们习惯的四则运算,乘方,我们背的九九运算表都是基于十进制的,要勉强用其它进制进行计算的话十分不爽



所以通常的 A 进制转 B 进制的做法是

先将 A 进制转换为十进制

再将十进制的数字转化为B进制



任意进制转10进制的方法刚才说过了

现在我们来看一下十进制转任意进制的方法



十进制转任意进制的方法一般有两种

1.试减法

2.短除法

总的来说,方法1适合笔算,方法2适合计算机算



下面分别说

1.试减法

通过估算反复减去不大于目标数字的权重的n次方来得到每一位的数字

说起来十分拗口,做起来其实不难

比如将十进制的 1234 转为 5 进制

首先寻找不大于12345的整数次方

5^4 = 625 < 1234

5^5 = 3125 > 1234

所以 625 符合条件

625 * 2 = 1250 >1234

625 * 1 = 625 <1234



所以第5位上的数字为1

1234(十进制) = 1????



1234 - 1 * 5^4 = 609作为目标数,再重复刚才的操作

因为刚才得出了最高位是第5位,所以现在接着往下算就可以了

5^3 = 125

125 * 4 = 500 <609

4位上的数字为4

1234(十进制) = 14???



609 - 4 * 5^3 = 109

5^2 = 25

25 * 4 = 100 <109

第三位上的数字为4

1234(十进制) = 144??



109 - 4 * 5^2 = 9

5^1 = 5

5 * 1 = 5 <9

5 * 2 = 10 >9

第二位上的数字为1

1234(十进制) = 1441?



9 - 1 * 5^1 = 4

最低位上的数字为4

1234(十进制) = 14414



可以看出这个方法需要多次估计与试算,所以不适合计算机算



2.短除法

通过反复短除目标数求余来得到每一位上的数字

比如 1234 5 进制

1234 / 5 = 246
4

246 / 5 = 49


1

49 / 5 = 9




4

9 / 5 = 1





4

1 / 5 = 0





1

可以看出,所有的余数就构成了转化的结果 14414

最低位在最上

这样的方法计算量比较大,适合计算机算



最后,对于有乘方关系的两个进制转换有简洁的算法

比如3进制和9进制互转

因为 9 32次方,所以 3 进制数每两位就对应 9 进制数的1

9进制

比如9进制12343进制就有如下对应关系

0----00

1----01

2----02

3----10

4----11

5----12

6----20

7----21

8----22

所以 9 进制 3781 转化为 3 进制就可以简单地查表计算为

3 7 8 1 = 10 21 22 01 = 10212201



归纳一下:

A进制转10进制:

k(n) * 10^(n-1) + k(n-1) * 10^(n-2) + ... + k(2) * 10^1 + k(1) * 10 ^0

其中n代表数字所在的位数,k(n)代表第n位上的数字值



10进制转A进制:试减法或者短除法

赞同53|评论(6)

求助知友

CyraSafia | 当前分类:10 排名:505

擅长Windows18 排名:2320

按默认排序|按时间排序

其他回答 10

2008-12-16 15:52zxkha| 当前分类:5 排名:4655

很难讲清楚...



2进制 8进制 10进制 16进制是最经常用的,给你举例子说明吧



每个进制转化成十进制的:



每个位的数字×n的(n1)相加,n是位数..



比如

101110(2)=1×2^61)+0×2^51)+1×2^41)+1×2^31)+1×2^21)+0×2^11)=45(10)



57624(8)=5×8^(51)+7×8^(41)+6×8^(31)+2×8^(21)+3×8^(11)=24468(10)



其他进制也是一样。。



至于十进制换成其他进制,有可以用除法来实现,在这边没办法打出来...



建议你找本计算机基础只是看看..

赞同0|评论

2008-12-16 16:0558607764| 当前分类:1

R 进制转换成十进制的方法



具体的方法是先将其并列形式的数写成其多项式表示形式,然后,经计算后就可得到其十进制的结果。这种方法披称为按权展开法。对于一个任意的R进制数N都可以写成如下形式:



N = dn-1 dn-2…d1 d0d-1d-2…d-m = dn-1*Rn-1+…+d1*R1+d0*R0+d-1*R-1+…+d-m*R-m



其中,R 为进位基数,Ri 是对应位的权值,di 为系数项,特此式求和计算之后,即可以完成 R 进制数对十进制数的转换。



二进制、十进制和十六进制及其相互转换的公式

http://www.networkdictionary.cn/hardware/Carries.php



数制转换的本质和方法

陈清华 郑涛 陈家伟

北京师范大学管理学院系统科学系,北京100875

http://www.cqvip.com/QK/91959X/2006002/22016303.html

赞同0|评论

2008-12-16 21:57大事糊涂| 当前分类:1

记住:



任何进制都是n进一

任意进制数都可以表示为n次方之和

a进制数 转换为 b进制数,有一个最佳中介是十进制数;

任意进制数之间的通用转换公式?还是努力自己去找为好----可以学到很多意外的技术

赞同0|评论

本文来源:https://www.2haoxitong.net/k/doc/fc92a0b7f121dd36a32d82bb.html

《进制转换公式.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式