任意一进制转换成任意一进制的公式,追加500分

作者&投稿:丰发 (若有异议请与网页底部的电邮联系)
如何判断两种进制间任意一个有限小数可转化为另一进制的有限小数?~

带有小数部分的不同进制转化,本质上是通分的过程。
比如0.375 = 3/8转成二进制,最大分母就是2^3,而分子只要是整数就行了。
因此,将一个k进制的小数比如0.25631先转换成2/k + 5/(k^2) + ... + 1/(k^5)然后通分计算成M/(k^5),再化成最简分数(分子分母互素)比如a/b
如果要将这个数转成r进制,则要求b是r的幂。否则就不能转化成有限小数形式。

比如0.375(10) = 375/1000,约分得3/8,8是2的幂,所以0.375可以转成二进制0..011(2)

如果A=N,N为十进制数
那么A=F,F=乱进制

所谓进制只是一个权重
在A进制下,数字实际值是各位数字的"权值*权重"的累加值
而"权重"为A的n次方,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 进制
首先寻找不大于1234的5的整数次方
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</br>余 4
246 / 5 = 49</br></br></br>余 1
49 / 5 = 9</br></br></br></br></br>余 4
9 / 5 = 1</br></br></br></br></br></br>余 4
1 / 5 = 0</br></br></br></br></br></br>余 1
可以看出,所有的余数就构成了转化的结果 14414
最低位在最上
这样的方法计算量比较大,适合计算机算

最后,对于有乘方关系的两个进制转换有简洁的算法
比如3进制和9进制互转
因为 9 是3的2次方,所以 3 进制数每两位就对应 9 进制数的1位
9进制
比如9进制1234转3进制就有如下对应关系
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进制:试减法或者短除法

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

记住:

任何进制都是“逢n进一”;
任意进制数都可以表示为“倍n次方之和”
a进制数 转换为 b进制数,有一个最佳中介是十进制数;
任意进制数之间的通用转换公式?还是努力自己去找为好----可以学到很多意外的技术

很难讲清楚...

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

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

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

比如
101110(2)=1×2^(6-1)+0×2^(5-1)+1×2^(4-1)+1×2^(3-1)+1×2^(2-1)+0×2^(1-1)=45(10)

57624(8)=5×8^(5-1)+7×8^(4-1)+6×8^(3-1)+2×8^(2-1)+3×8^(1-1)=24468(10)

其他进制也是一样。。

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

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

不需要公式,知道原理的话,计算很简单

一般是先转化称10进制,因为十进制比较常用,过度一下不容易出错
比如 7进制521转化为13进制
7进制521=5*49+2*7+1=260
转化成13进制
260 除以13 = 20 …… 0 (余数)
20 除以13 = 1 …… 7 (余数)
1 除以13 = 0 …… 1 (余数)
把余数从下写到上 得到了
7进制521 = 13进制 170


进制转换,请将一个n进制的数转换成m进制的数,并输出.
都没分数饿 刚学C++的那会儿写的有点乱 \/\/任意进制转换 include<iostream> using namespace std;char* jinzhi(char* c,int m,int n){ if(m<2||n<2)return "进制不合法";int i=0,j=0;while(c[i]&&c[i]!='.')++i;int z=0;unsigned long long d=0;while(i--){ z=c[j]...

牛人帮忙说一下10进制转化成X进制和X进制转化成10进制的方法,最好说...
约定任意数位数:(记为N)最右一位为第0位 向左依次递增 进制数(记为X)即基数,比如10进制进制数就是10 先说简单的 某进制转化成10进制 第N位上的数字乘以X的N次方 然后全部加起来 例如: 8进制的765432 转化成10进制就是 2*8e0 + 3*8e1 + 4*8e2 + 5*8e3 + 6*8e4 + 7*8e5(8...

进位制是什么意思讲一下 数学
位权概念 对于形式化的进制表示,我们可以从0开始,对数字的各个数位进行编号,即个位起往左依次为编号0,1,2,……;对称的,从小数点后的数位则是-1,-2,……进行进制转换时,我们不妨设源进制(转换前所用进制)的基为R1,目标进制(转换后所用进制)的基为R2,原数值的表示按数位为AnA(n-...

关于计算机的进制转换方法
例:将25转换为十六进制数 解:25÷16=1 余数9 1÷16=0 余数1 所以25=(19)16 3、二进制数与十六进制数之间的转换 由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.十六进制数转换成二进制数,只要将每一位十六...

各种进制转换方法
1 ….1 ---最左位 ∴ (30)10=(11110)2 将(30)10转换成八、十六进制数 8| 30 ……6 ---最右位 3 ---最左位 ∴ (30)10 =(36)8 16| 30 …14(E)---最右位 1 ---最左位 ∴ (30)10 =(1E)16 3、将P进制数转换为十进制数 把一个二进制转换成十进制采用方法:把这个...

进制转换的英文字母是啥意思?
这四个字母分别代表不同进制的后缀 区别如下:D(decimal)表示这个数是十进制 B(binary)表示这个数是二进制 O(octor)表示这个数是八进制 H(hex)表示这个数是十六进制

十进制转化为任意进制的数(最好用java写)
根据题意编写代码如下:import java.util.Scanner;public class Main {public static void main(String []args){int n, r;String number = "";boolean flag = true;Scanner in = new Scanner(System.in);while (in.hasNext()){number = "";flag = true;n = in.nextInt();r = in.next...

怎么在任意进制间转换
二进制数的运算公式:0+0=0 0×0=0 0+1=1 0×1=0 1+0=1 1×0=0 1+1=10 1×1=1 2.十进制和二进制间的转换 (1) 十进制数转换成二进制 将十进制整数转换成二进制整数时,只要将它一次一次地被2除,得到的余数从最后一个余数读起)就是二进制表示的数。2) 二进制数...

C++中怎样完成将一个十进制转换成八进制、十六进制数的功能
3、十进制表示的数字以八进制的格式打印出来看看结果,首先通过计算机得到十进制的数字20等于八进制的24,具体如下图所示,左边八进制,右边十进制。4、然后实现以下代码段,十进制的数字20以八进制的格式进行打印输出,代码段是先保存一个十进制的数字20,然后通过%o的方式输出八进制。5、代码段编译通过...

计算机一级 进制与进制之间滴转换 2转8 10 16 还有小数部分的转换 求...
15\/8=1...7 1\/8=0...1 把余数倒数读出就是17结果就是(1111)2=(15)10=(17)8 同样(15)10转换成16进制 15\/16=0...15 结果就是(1111)2=(15)10=(15)19 (149.6875)10转换 149\/2=74...1 74\/2=37...0 37\/2=18...1 18\/2=9...0 9\/2=4...1 4\/2=2...0 2\/2=...

静宁县19262218088: 任意一进制转换成任意一进制的公式,追加500分 -
哈晏辰龙: 所谓进制只是一个权重 在A进制下,数字实际值是各位数字的"权值*权重"的累加值 而"权重"为A的n次方,n代表位数用公式来表示就是: abcd = a * A^3 + b * A^2 + c * A^1 + d * A^0举个直观的例子来说 在7进制下,数字 1234 的大小应该...

静宁县19262218088: 任意进制数之间相互转换 -
哈晏辰龙: 一个八进制等于三位二进制、一个十六进制等于四位二进制.直接数位数!

静宁县19262218088: 什么是进制,各个进制的转换公式是什么 -
哈晏辰龙: 简单说,N进制就是“逢N进1,借1当N.” N进制转换为10进制,直接写成多项式计算就可以了, 就像 253(10进制)=2*10^2+5*10+2 253(8进制)=2*8^2+5*8+3=171(10进制) 253(16进制)=2*16^2+5*16+3=595(10进制) 110111(2进制)=1*2^5+1*2...

静宁县19262218088: 十六进制转十进制方法是什么? -
哈晏辰龙: 十六进制转换成十进制的具体算法是: 1、首先明白16进制数(从右到左数是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去.2、明白ABCDEF表示的二进...

静宁县19262218088: 进制之间的转换方法 -
哈晏辰龙: 逢2进1,8进1,16进1,32进1

静宁县19262218088: C语言中进制互相转换的公式是什么 -
哈晏辰龙: 刚帮你从网上找了个例子,主要思想就是用X,d,O等打印出来 void two_ten() {long num;int b,TheTen=0,Total=0;printf("\n请输入一个二进制数(只包含0或1):");scanf("%ld",&num);while(num){b=num-(int)(num/10)*10;TheTen+=b*pow(2,...

静宁县19262218088: 进制之间的数怎样转换? -
哈晏辰龙: 进制转换 一般来说,对于任意大于1的整数n,存在n进制,其特点是基数为n,逢n进一.其中最常用的是二进制、八进制和十六进制. 任意进制的数字对应的十进制值为: Kn*Bn + Kn-1*Bn-1 + …… + K1*B1 + K0*B0 + K-1*B-1 + K-2*B-2 …...

静宁县19262218088: 进制之间的换算.公式加举例说明 -
哈晏辰龙: 会有一定影响,不过对于高级语言编程来说影响不是很大,属于一种比较基础的内容,至少得明白一点原理,其实掌握了2进制和10进制之间的转换就很容易了 2进制、8进制、16进制和10进制之间转换可以用一个公式展开 比方说8进制456转换为...

静宁县19262218088: 各进制数之间转换规则 -
哈晏辰龙: 2进制的数,如1101就是十进制的:1*2³+1*2²+0*2+1=11

静宁县19262218088: 进制如何转化?
哈晏辰龙: 十进制整数转换R进制(R可以是任何整数,比如3、5、7)整数,方法就是除R取余,十进制转八或十六进制方法类似转二进制,除以基数取余就行了,比如转八进制就除8,转十六进制就除16. 二进制和八进制、十六进制之间转换采用的是分...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网