进制间的相互转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进制间的相互转换相关的知识,希望对你有一定的参考价值。

 

       我们平时计算都是使用十进制数,但是有时候我们需要用到二进制数、十六进制数等。在进制转换中,我们主要需要掌握的是十进制转换成N进制和N进制转换成十进制,而对于任意进制之间的相互转换,例如:P进制转换成R进制。


1、任意进制转十进制


       k(n) * 10^(n-1) + k(n-1) * 10^(n-2) + ... + k(2) * 10^1 + k(1) * 10 ^0,其中n代表数字所在的位数,k(n)代表第n位上的数字值


2、十进制转任意进制:
        (1)试减法
              例:将十进制1234转八进制步骤如下

                  1.首先寻找不大于1234的8的整数次方。
                    8^3=512<1234
                    8^4=4096>1234
                    所以512符合要求,2*8^3=1024。因此最高位为2
                    用1234-1024=210作为目标数,重复刚才的操作
                    8^2=64<210
                    8^3=512>210
                    3*8^2=192,第二位为3
                    用210-192=18作为目标数
                    8^1=8<18
                    8^2=64>18
                    2*8^1=16,第三位为2
                    18-16=2
                    最低位为2
                    最后计算出八进制为:2322
       (2)短除法
                除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,
          例:将十进制的(796)D转换为八进制的步骤如下:
                    1. 将商796除以8,商99余数为4;
                    2. 将商99除以8,商12余数为3;
                    3. 将商12除以8,商1余数为4;
                    4. 将商1除以8,商0余数为1;
                    5. 读数,因为最后一位是经过多次除以8才得到的,因此它是最高位,读数字从最后的余数向前读,1434,即(796)D=(1434)O。

技术分享



3、二进制可以与八进制、十六进制直接转换


        比如十进制81的二进制为:1010001

              二进制直接转八进制,二进制3个一组不足补0:001 010 001,得到八进制为121

              二进制直接转十六进制,二进制4个一组不足补0: 0101 0001,得到十六进制为51


4、八进制、十六进制可以与二进制直接转换,规则与上边相反。


5、八进制与十六进制无法直接转换,可以将八进制先转为十进制,再用十进制转为十六进制。



本文出自 “a4boy” 博客,转载请与作者联系!

以上是关于进制间的相互转换的主要内容,如果未能解决你的问题,请参考以下文章

C#中二进制和流之间的各种相互转换

格雷码与二进制码之间的相互转换

ArrayList和数组间的相互转换

Delphi - 10进制16进制相互转换

Java数据类型中StringIntegerint相互间的转换

求教如何Python十进制小数和二进制小数相互转换的实现方式,用代码表示出来,谢谢