如题所述
进制转换的相关问题。
进制这事儿,说到底就是位值原理,即:同一个数字,放在不同的数位上,代表不同大小的“量”。例如:十进制中,百位上的1表示100,十位上的1表示10。
任意进制转换成十进制:
任何进制中,每个数都可以按位权展开成各个数位上的数字乘以对应数位的位权,再相加的形式。例如:十进制的123=1×100+2×10+3×1
八进制的123=1×64+2×8+3×1(注意:这两个123不相等)
而八进制123=1×64+2×8+3×1按十进制的规则计算,最后的和就是123的八进制转化成十进制的结果。即123(八进制)=1×64+2×8+3×1=83(十进制)
小数部分亦是如此,其他进制也是如此。
十进制转化成任意进制:(我觉得其实是上述过程的逆。)
整数部分:辗转相除,逆向取余。
例:对于十进制转八进制的整数部分,用被除数反复除以8,除第一次外,每次除以8均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求八进制数的最高位。
为什么这样算呢?以上面的例子为例。首先83除以8的余数是3,因为无论如何前两位都是8的倍数,结果是不可能出现在余数里的,那么3就是最低位。而83除以8的商是1×8+2×1,同理再除以8,余数就是2,那么2就是第二位。以此类推,当首次出现商为0时,所对的余数就是最高位。
小数部分:乘积取整法。(注意这是正向取值)
例:对于十进制转八进制的小数部分采用连续乘以基数8,并依次取出的整数部分,直至结果的小数部分为0。
0.123(十进制)转化成八进制表格表示。
因子
计算过程
结果
取小数部分
取整数部分
0.123
×8
0.984
0.984
0
0.984
×8
7.872
0.872
7
0.872
×8
6.976
0.976
6
0.976
×8
7.808
0.808
7
0.808
×8
6.464
0.464
6
0.464
×8
3.712
0.712
3
0.712
×8
5.696
0.696
5
0.696
×8
5.568
0.568
5
0.568
×8
4.544
0.544
4
……
故最后结果是:0.076763554……(这是个无限不循环小数)(八进制)
为什么这样算呢?例如:0.123是个八进制数,设它的十进制为x,则x=1×(1/8)+2x(1/64)+3x(1/512)那么8x=1+2x(1/8)+3x(1/64),此时整数部分就是1,1就作为x化为八进制0.123的小数部分第一位。8x-1=2x(1/8)+3x(1/64),(8x-1)x8=2+3x(1/8),此时整数部分就是2,2就作为x化为八进制的小数部分第二位,其余以此类推,直至小数部分为0。
同理,其他进制也是如此。
注:部分内容引用360百科“进制转换”词条。
进制这事儿,说到底就是位值原理,即:同一个数字,放在不同的数位上,代表不同大小的“量”。例如:十进制中,百位上的1表示100,十位上的1表示10。
任意进制转换成十进制:
任何进制中,每个数都可以按位权展开成各个数位上的数字乘以对应数位的位权,再相加的形式。例如:十进制的123=1×100+2×10+3×1
八进制的123=1×64+2×8+3×1(注意:这两个123不相等)
而八进制123=1×64+2×8+3×1按十进制的规则计算,最后的和就是123的八进制转化成十进制的结果。即123(八进制)=1×64+2×8+3×1=83(十进制)
小数部分亦是如此,其他进制也是如此。
十进制转化成任意进制:(我觉得其实是上述过程的逆。)
整数部分:辗转相除,逆向取余。
例:对于十进制转八进制的整数部分,用被除数反复除以8,除第一次外,每次除以8均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求八进制数的最高位。
为什么这样算呢?以上面的例子为例。首先83除以8的余数是3,因为无论如何前两位都是8的倍数,结果是不可能出现在余数里的,那么3就是最低位。而83除以8的商是1×8+2×1,同理再除以8,余数就是2,那么2就是第二位。以此类推,当首次出现商为0时,所对的余数就是最高位。
小数部分:乘积取整法。(注意这是正向取值)
例:对于十进制转八进制的小数部分采用连续乘以基数8,并依次取出的整数部分,直至结果的小数部分为0。
0.123(十进制)转化成八进制表格表示。
因子
计算过程
结果
取小数部分
取整数部分
0.123
×8
0.984
0.984
0
0.984
×8
7.872
0.872
7
0.872
×8
6.976
0.976
6
0.976
×8
7.808
0.808
7
0.808
×8
6.464
0.464
6
0.464
×8
3.712
0.712
3
0.712
×8
5.696
0.696
5
0.696
×8
5.568
0.568
5
0.568
×8
4.544
0.544
4
……
故最后结果是:0.076763554……(这是个无限不循环小数)(八进制)
为什么这样算呢?例如:0.123是个八进制数,设它的十进制为x,则x=1×(1/8)+2x(1/64)+3x(1/512)那么8x=1+2x(1/8)+3x(1/64),此时整数部分就是1,1就作为x化为八进制0.123的小数部分第一位。8x-1=2x(1/8)+3x(1/64),(8x-1)x8=2+3x(1/8),此时整数部分就是2,2就作为x化为八进制的小数部分第二位,其余以此类推,直至小数部分为0。
同理,其他进制也是如此。
注:部分内容引用360百科“进制转换”词条。
温馨提示:答案为网友推荐,仅供参考