进制转换_进制转换器 - CSDN
进制转换 订阅
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。 展开全文
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。
信息
基本解释
人们利用符号来计数的方法
基本因素
基数和位权
中文名
进制转换
基    数
进位计数制中所采用的数码的个数
进制转换进制转换本质
我们知道十进制转换成二进制用短除法,但是为什么用短除法呢?请往下看。“数制”只是一套符号系统来表示指称“量”的多少。我们用“1”这个符号来表示一个这一“量”的概念。自然界的“量”是无穷的,我们不可能为每一个“量”都造一个符号,这样的系统没人记得住。所以必须用有限的符号按一定的规律进行排列组合来表示这无限的“量”。符号是有限的,这些符号按照某种规则进行排列组合的个数是无限的。十进制是10个符号的排列组合,二进制是2个符号的排列组合。在进行进制转换时有一基本原则:转换后表达的“量”的多少不能发生改变。二进制中的111个苹果和十进制中的7个苹果是一样多的。十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分……R进制中的数位排列是这样的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3……可以看出相邻的数位间相差进制的一次方。以下部分来源:知乎网友进制这事儿,说到底就是位值原理,即:同一个数字,放在不同的数位上,代表不同大小的“量”。例如:十进制中,百位上的1表示100,十位上的1表示10。任何进制中,每个数都可以按位权展开成各个数位上的数字乘以对应数位的位权,再相加的形式,如:  十进制的123=1×100+2×10+3×1  十进制的9876=9×1000+8×100+7×10+6×1  问:为啥相应的数位是1000、100、10、1?为啥不是4、3、2、1?答:十进制,满十进一,再满十再进一,因此要想进到第三位,得有10×10;第4位得有10×10×10这样我们就知道了:对10进制,从低位到高位,依次要乘以10^0,10^1,10^2,10^3……,也就是1、10、100、1000  对2进制,从低位到高位,依次要乘以2^0,2^1,2^2,2^3……,也就是1、2、4、8、……  下面我们开始转换进制(以十进制换成二进制为例):  原来十进制咱们的数位叫 千位、百位、十位……  现在二进制数位变成了八位、四位、二位……  模仿上面十进制按位权展开的方式,把二进制数1011按权展开: 1011=1×2^3+0×2^2+1×2^1+1×2^0=1×8+0×4+1×2+1×1=8+2+1=11  接下来我们进行十进制往二进制的转换:  比较小的数,直接通过拆分就可以转换回去  比如13,我们把数位摆好八位、四位、二位,不能写十六了,因为一旦“十六”那个数位上的符号是“1”,那就表示有1个16,即便后面数位上的符号全部是“0”,把这个二进制数按权位展开后,在按照十进制的运算规律计算,得到的数也大于13了。那最多就只能包含“八”这个数位。 13-8=5,5当中有4,5-4=1  好啦,我们知道13=1*8+1*4+0*2+1*1 把“1”、“1”、“0”“1”这几个符号放到数位上去:八位、四位、二位、一位  1 1 0 1  于是十进制数13=二进制数1101  现在你按照书上说的短除法来试试,会发现它和你凑数得到的结果刚好是一样的,为什么短除法可以实现进制的转换呢?为什么每次要除以进制呢?为什么要把余数倒着排列呢?  想要知道其中的道理的话,请仔细品味以下的递归原理(不知道递归没关系):  (1)一个十进制数321的末尾是1,意味着一定是……+1,省略号部分一定是10的倍数,所以一个十进制数末尾是1意味着十进制数除以进制10一定余1。所以第一次除以10之后的余数,应该放在十进制的最后一个数位“个位”,也就是说个位上的符号是1。类比,一个二进制数111(注意,数值不等于上面十进制的111)末尾是1,意味着一定是……+1,前面的省略号部分都是2的倍数。所以一个二进制数末尾是1,意味着它对应的十进制数除以进制2一定余1。所以第一次除以2之后的余数,应该放在二进制的最后一个数位“一位”,也就是说一位上的符号是1。(2)如果一个十进制数321“十位”是2,我们希望把它转换为(1)的情况。那么我们把这个十进制数的末尾抹掉,也就是减去“个位”上的1,再除以进制10,得到32。这样原来“十位”上的“2”就掉到了“个位”上。再把32做(1)的处理。类比,如果一个二进制数111“二位”是1,我们希望把它转换为(1)的情况,那么我们把这个二进制数的末尾抹掉,也就是减去“一位”上的1,再除以进制2,得到11。这样原来“二位”上的“1”就掉到了“一位”上。再把11做(1)的处理。总结:其实这个过程就是把各个数位上的符号求出来的过程。现在你应该可以回答以下问题了:为什么短除法可以实现进制的转换呢?为什么每次要除以进制呢?为什么要把余数倒着排列呢?R进制转换成十进制就是按权位展开,把展开式放到十进制下,再按照“十进制”的运算规律计算。因为是十进制,所以就允许使用2、3、4、5、6、7、8、9了。所以2的n次方就不用写成指数,而可以用另外的八个符号来表示了。十进制--->二进制对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。 对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”。给你一个十进制,比如:6,如果将它转换成二进制数呢?10进制数转换成二进制数,这是一个连续除以2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。听起来有些糊涂?结合例子来说明。比如要转换6为二进制数。“把要转换的数,除以2,得到商和余数”。那么: 要转换的数是6, 6 ÷ 2,得到商是3,余数是0。“将商继续除以2,直到商为0……”现在商是3,还不是0,所以继续除以2。那就: 3 ÷ 2, 得到商是1,余数是1。“将商继续除以2,直到商为0……”现在商是1,还不是0,所以继续除以2。那就: 1 ÷ 2, 得到商是0,余数是1“将商继续除以2,直到商为0……最后将所有余数倒序排列”好极!现在商已经是0。我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了!6转换成二进制,结果是110。把上面的一段改成用表格来表示,则为:(在计算机中,÷用 / 来表示)二进制--->十进制二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为:下面是竖式:0110 0100 换算成十进制从右往左开始换算第0位 0 * 20 = 0第1位 0 * 21 = 0第2位 1 * 22 = 4第3位 0 * 23 = 0第4位 0 * 24 = 0第5位 1 * 25 = 32第6位 1 * 26 = 64第7位 0 * 27 = 0公式:第N位2(N)---------------------------100用横式计算为:0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1* 26 + 0 * 27 = 100除0以外的数字0次方都是1,但0乘以多少都是0,所以我们也可以直接跳过值为0的位:1 * 22 + 1 * 25 +1*26 = 100十进制--->八进制10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。来看一个例子,如何将十进制数120转换成八进制数。用表格表示:120转换为8进制,结果为:170。八进制--->十进制八进制就是逢8进1。八进制数采用 0~7这八数来表达一个数。八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……所以,设有一个八进制数:1507,转换为十进制为:用竖式表示:1507换算成十进制。第0位 7 * 80 = 7第1位 0 * 81 = 0第2位 5 * 82 = 320第3位 1 * 83 = 512--------------------------839同样,我们也可以用横式直接计算:7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839结果是,八进制数 1507 转换成十进制数为 839十进制--->十六进制10进制数转换成16进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成16。同样是120,转换成16进制则为:120转换为16进制,结果为:78。十六进制--->十进制16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。假设有一个十六进数 2AF5, 那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:第0位: 5 * 160 = 5第1位: F * 161 = 240第2位: A * 162 = 2560第3位: 2 * 163 = 8192-------------------------------------10997直接计算就是:5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997(别忘了,在上面的计算中,A表示10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100二进制--->八进制(11001.101)(二)整数部分: [1]  从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:001=1011=3然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式八进制--->二进制(31.5)(八)整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:1---->1---->0013---->11然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式二进制--->十六进制二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。我们也一样,只要学完这一小节,就能做到。首先我们来看一个二进制数:1111,它是多少呢?你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 8,然后依次是 22 = 4,21=2, 20 = 1。记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。下面列出四位二进制数xxxx 所有可能的值(中间略过部分)二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。如:十六进制--->二进制反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?先转换F:看到F,我们需知道它是15(可能你还不熟悉A~F这六个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。接着转换 D:看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。所以,FD转换为二进制数,为: 1111 1101由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:结果16进制为: 0x4D2然后我们可直接写出0x4D2的二进制形式: 0100 1101 0010。其中对映关系为:0100 -- 41101 -- D0010 -- 2同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。下面举例一个int类型的二进制数:01101101 11100101 10101111 00011011我们按四位一组转换为16进制: 6D E5 AF 1B再转换为10进制:6*167+D*166+E*165+5*164+A*163+F*162+1*161+B*160=1,843,769,115十进制--->负进制下面是将十进制数转换为负R进制的公式:N=(dmdm-1...d1d0)-R=dm*(-R)m+dm-1*(-R)m-1+...+d1*(-R)1+d0*(-R)015=1*(-2)4+0*(-2)3+0*(-2)2+1*(-2)1+1*(-2)0=10011(-2)
收起全文
精华内容
参与话题
  • 进制转换 原理 进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。 基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。 位权是指...

    进制转换

        

    原理

    进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。

    基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。

     位权是指,进位制中每一固定位置对应的单位值。

     在知乎有个问题下的解答很不错,可以参考:打开链接

    他们之间的关系如下:

    wpsC01D.tmp

     

    接下来我们一一阐述。

    一:(二,八,十六进制)转十进制

     

    方法:假设我们要将n进制转换为十进制,首先我们从n进制的右边为第一位数(从低位到高位),其权值是n的0次方,第二位是n的1次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

     

    举个例子:将(1101)n  转换为十进制

    (1101)n  =  1*(n)^3  + 1 * (n) ^ 2  +  0 * (n) ^ 1 + 0 * (n) ^ 0 ;

    如:(1101) 2  =  1*(2)^3  + 1 * (2) ^ 2  +  0 * (2) ^ 1 + 1 * (2) ^ 0  =  13;

    八进制,十六进制同样如此。

    例:将十六进制的(2B)H转换为十进制的步骤如下:

    1. 第0位 B x 16^0 = 11;

    2. 第1位 2 x 16^1 = 32;

    3. 读数,把结果值相加,11+32=43,即(2B)H=(43)D。

     

    二:十进制 转换为(二,八,十六进制)

     

    假设我们要将十进制转换为n进制

    方法:除n取余法,即每次将整数部分除以n,余数为该位权上的数,而商继续除以n,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。

    十进制转换二进制

     

    例:将十进制的(796)D转换为十六进制的步骤如下:

    1. 将商796除以16,商49余数为12,对应十六进制的C;

    2. 将商49除以16,商3余数为1;

    3. 将商3除以16,商0余数为3;

    4. 读数,因为最后一位是经过多次除以16才得到的,因此它是最高位,读数字从最后的余数向前读,31C,即(796)D=(31C)H。

    下面转载自https://www.cnblogs.com/gaizai/p/4233780.html

    (三) (二进制) ↔ (八、十六进制)

    wpsC044.tmp

    (Figure9:二进制转换为其它进制)

    • 二进制 → 八进制

      方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

      例:将二进制的(11010111.0100111)B转换为八进制的步骤如下:

    1. 小数点前111 = 7;

    2. 010 = 2;

    3. 11补全为011,011 = 3;

    4. 小数点后010 = 2;

    5. 011 = 3;

    6. 1补全为100,100 = 4;

    7. 读数,读数从高位到低位,即(11010111.0100111)B=(327.234)O。

    wpsC054.tmp

    (Figure10:图解二进制 → 八进制)

    二进制与八进制编码对应表:

    二进制

    八进制

    000

    0

    001

    1

    010

    2

    011

    3

    100

    4

    101

    5

    110

    6

    111

    7

     

    • 八进制 → 二进制

      方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

      例:将八进制的(327)O转换为二进制的步骤如下:

    1. 3 = 011;

    2. 2 = 010;

    3. 7 = 111;

    4. 读数,读数从高位到低位,011010111,即(327)O=(11010111)B。

    wpsC055.tmp

    (Figure11:图解八进制 → 二进制)

    • 二进制 → 十六进制

      方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

      例:将二进制的(11010111)B转换为十六进制的步骤如下:

    1. 0111 = 7;

    2. 1101 = D;

    3. 读数,读数从高位到低位,即(11010111)B=(D7)H。

    wpsC056.tmp

    (Figure12:图解二进制 → 十六进制)

    • 十六进制 → 二进制

      方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

      例:将十六进制的(D7)H转换为二进制的步骤如下:

    1. D = 1101;

    2. 7 = 0111;

    3. 读数,读数从高位到低位,即(D7)H=(11010111)B。

    wpsC057.tmp

    (Figure13:图解十六进制 → 二进制)

    (四) (八进制) ↔ (十六进制)

    wpsC058.tmp

    (Figure14:八进制与十六进制之间的转换)

    • 八进制 → 十六进制

      方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。

      例:将八进制的(327)O转换为十六进制的步骤如下:

    1. 3 = 011;

    2. 2 = 010;

    3. 7 = 111;

    4. 0111 = 7;

    5. 1101 = D;

    6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。

    wpsC069.tmp

    (Figure15:图解八进制 → 十六进制)

    • 十六进制 → 八进制

      方法:将十六进制转换为二进制,然后再将二进制转换为八进制,小数点位置不变。

      例:将十六进制的(D7)H转换为八进制的步骤如下:

    1. 7 = 0111;

    2. D = 1101;

    3. 0111 = 7;

    4. 010 = 2;

    5. 011 = 3;

    6. 读数,读数从高位到低位,327,即(D7)H=(327)O。

    wpsC06A.tmp

    扩展

    负数的进制转换稍微有些不同。

    先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。

    包含小数的进制换算:

    (ABC.8C)H=10x16^2+11x16^1+12x16^0+8x16^-1+12x16^-2

    =2560+176+12+0.5+0.046875

    =(2748.546875)D

    代码

    下面代码来源百科(懒~)

    十进制转换k进制

    #include<cstdio>
    #include<iostream>
    #include<ctime>
    char a[1000];
    using namespace std;
    int main()
    {
        int y=0,k,n,x;
        char z='A';
        scanf ("%d %d",&n,&x);
        while (n!=0)
        {   
              y++;
                 a[y]=n%x;
              n=n/x;
              if (a[y]>9) a[y]=z+(a[y]-10); 
              else a[y]=a[y]+'0';
        }
        for (int i=y;i>0;i--)
        printf ("%c",a[i]);
        return 0;
    }

    m进制转换十进制

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<cstring>
    char a[10000];
    using namespace std;
    int main()
    {
       int n,m;
       int f=0;
       scanf ("%s%d",a,&m);
       for (int i=0;i<strlen(a);i++)
       {
            f*=m;
            if (a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
            {
                f=f+(a[i]-'A'+10);
            }
            else
            {
                f=f+(a[i]-'0');
            }
       }
       printf ("%d",f);
       return 0;
    }

    注:用C语言的格式化输入输出可以快速转换10进制,8进制和16进制。例子:10进制转16进制:

    #include <cstido>
     
    int main()
    {
        int a;
        scanf("%d",&a);
        printf("%x",a);
        return 0;
    }

    花费不少时间总结在一起了,望有用。

    展开全文
  • 进制之间快速转换技巧

    千次阅读 多人点赞 2019-03-30 18:05:26
    1.十进制、二进制、八进制、十六进制对应数值如下表。 进制换算表 十进制进制进制 十六进制 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 ...

    1.十进制、二进制、八进制、十六进制对应数值如下表。

     

    进制换算表
    十进制 二进制 八进制 十六进制
    0 0 0 0
    1 1 1 1
    2 10 2 2
    3 11 3 3
    4 100 4 4
    5 101 5 5
    6 110 6 6
    7 111 7 7
    8 1000 10 8
    9 1001 11 9
    10 1010 12 A
    11 1011 13 B
    12 1100 14 C
    13 1101 15 D
    14 1110 16 E
    15 1111 17 F

    2.进制之间转换的规律(二进制不考虑符号位)

           2.1二进制向十进制转换的时候,可以从二进制右侧往左进行推算,具体步骤如下:

               

    二进制转十进制
    二进制位 ... 0 0 0 0 0 0 0 0
    对应十进制 2n次方 128 64 32 16 8 4 2 1

                 ① 二进制位对应的数字乘以十进制对应数

                 ②将相乘所得数字相加即可得十进制树

               例如:二进制  101010,从右往左推算 0*1+1*2+0*4+1*8+0*16+1*32=42

                                  


           2.2二进制向八进制转换的时候,可以从二进制右侧往左进行推算3位一组,具体步骤如下:


                                   

                         例如:二进制  1101010,从右往左 可分为3组,不足一组左侧补0 

                                                    001      101     010

                                      

            2.3二进制向十六进制转换的时候,可以从二进制右侧往左进行推算4位一组,具体步骤如下:


                                      

                      例如:二进制  1101010,从右往左 可分为3组,不足一组左侧补0 

                                                      0110     1010

                                        

    以上运算可互为逆运算

    十进制转八进制、十六进制时,可采用短除法,也可先转换为二进制再分组,转换为八进制和十六进制。

    所有进制之间转换都可先进行二进制转换,再进行其他运算,比如八进制转十六进制

                         

     

     

     

     

    展开全文
  • 为什么要使用进制数 数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 &lt;黑客帝国&gt;电影中那些 0101010… 的数字 ; 我们操作计算机 , 实际 就是 使用 程序 和 软件 在 计算机上 各种读写...

    为什么要使用进制数

    数据在计算机中的表示,最终以二进制的形式存在 , 就是各种 <黑客帝国>电影中那些 0101010… 的数字 ;

    我们操作计算机 , 实际 就是 使用 程序 和 软件 在 计算机上 各种读写数据,
    如果我们直接操作二进制的话 , 面对这么长的数进行思考或操作,没有人会喜欢。

    C,C++ 语言 没有提供在代码直接写二进制数的方法。
    用16进制或8进制可以解决这个问题。
    因为,进制越大,数的表达长度也就越短。

    之所以 使用 16或8进制,而不其它的,诸如9或20进制 .

    是因为2、8、16,分别是2的1次方、3次方、4次方。这一点使得三种进制之间可以非常直接地互相转换 ;

    8进制或16进制 既 缩短了二进制数,还能 保持了二进制数的表达特点。转换还方便 .

    进制的介绍

    进制 : 是计算机中数据的一种表示方法。 N进制的数可以用0~(N-1) 的数表示, 超过9的用字母A-F 表示 .

    • 10进制

    先说 我们最 熟悉的 10进制 , 就是 用 0~9 的数表示 , 逢 10 进 1 .

    • 16进制

    如果是 16 进制 , 它就是 由 0-9,A-F组成, 与10进制的对应关系是:0-9 对应 0-9;A-F对应10-15;
    字母不区分大小写。

    • 2进制 和 8进制

    2进制 由 0-1组成

    8进制 由 0-7组成

    进制的转换公式

    1. 二进制转换十进制
      这里写图片描述
    2. 八进制转换十进制
      这里写图片描述
    3. 十六进制转换十进制
      这里写图片描述

    如何快速的进行 2进制,10进制,16进制 的 相互转换

    • 先记住二进制 的8421

    首先我们来看一个二进制数:1111,它是多少呢?
    你可能还要这样计算:1×2º+1×2¹+1×2²+1×2³=1×1+1×2+1×4+1×8=15。

    我们必须直接记住1111每一位的权值,并且是从高位往低位记,:8、4、2、1。 即,最高位的权值为2³=8,然后依次是 2²=4,2¹=2,2º=1。

    记住8 4 2 1,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

    • 接下来我们练习 通过 8421 的方式 进行 快速的计算 , 2,10,16进制的转换

    1111 = 8 + 4 + 2 + 1 = 15 =F
    1110 = 8 + 4 + 2 + 0 = 14= E
    1101 = 8 + 4 + 0 + 1 = 13= D
    1100 = 8 + 4 + 0 + 0 = 12 =C
    1011 = 8 + 0 + 2 + 1 = 11= B
    1010 = 8 + 0 + 2 + 0 = 10 =A
    1001 = 8 + 0 + 0 + 1 =9 =9
    ……
    0001 = 0 + 0 + 0 + 1 = 1= 1
    0000 = 0 + 0 + 0 + 0 = 0= 0

    • 二进制数要转换为十六进制

    二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。
    如(上行为二制数,下面为对应的十六进制):
    1111 1101 , 1010 0101 , 1001 1011
    F D , A 5 , 9 B

    • 16进制数转换为二进制数

    反过来,当我们看到 FD时,如何迅速将此16进制数转换为二进制数呢?
    先转换F:
    看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。
    接着转换D
    看到D,知道它是13,13如何用8421凑呢?应该是:8 + 4 + 1,即:1101。
    所以,FD转换为二进制数,为:1111 1101

    • 十进制数转换成2进制

    由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。
    比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:
    被除数 计算过程 商 余数
    1234 1234/16 77 2
    77 77/16 4 13 (D)
    4 4/16 0 4
    结果16进制为:4D2
    然后我们可直接写出4D2的二进制形式:
    0100
    1101
    0010
    其中对映关系为:
    0100 – 4
    1101 – D
    0010 – 2

    • 二进制数转换成10进制数

    同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。
    下面举例一个int类型的二进制数:

    01101101 11100101 10101111 00011011

    我们按四位一组转换为16进制:6D E5 AF 1B
    十进制转十六进制
    采余数定理分解,例如将487710转成十六进制:

    487710÷16=30481….14(E)
    30481÷16=1905….1
    1905÷16=119….1
    119÷16=7….7
    7÷16=0….7
    这样就计到487710(10)=7711E(16)

    展开全文
  • 进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 ...

    作者:戴翔
    电子邮箱:daixiangcn@outlook.com
    简介:中华人民共和国公民,中国共青团员,CSDN博客专家,秦淮区疾控中心托管社会公益组织指南针工作室志愿者,创业公司研发中心负责人,在校大学生。


    1.十进制转R进制

    1.1 十进制转二进制

    十进制整数转二进制

    十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。

    例题: 135D = ______ B

    **解析:**如下图所示,将135除以2,得余数,直到不能整除,然后再将余数从下至上倒取。得到结果:1000 0111B.
    这里写图片描述

    图1.十进制整数转二进制

    十进制小数转二进制

    十进制小数转换成二进制小数采用 “乘2取整,顺序排列” 法。

    具体做法是:

    用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

    然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    例题: 0.68D = ______ B(精确到小数点后5位)

    **解析:**如下图所示,0.68乘以2,取整,然后再将小数乘以2,取整,直到达到题目要求精度。得到结果:0.10101B.

    在这里插入图片描述

    图2.十进制小数转二进制

    1.2 十进制转八进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 10.68D = ______ Q(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以8取余数,直到无法整除。小数部分0.68乘以8,取整,然后再将小数乘以8,取整,直到达到题目要求精度。得到结果:12.534Q.

    这里写图片描述

    图3.十进制转八进制

    1.3 十进制转十六进制

    思路和十进制转二进制一样,参考如下例题:

    例题: 25.68D = ______ H(精确到小数点后3位)

    **解析:**如下图所示,整数部分除以16取余数,直到无法整除。小数部分0.68乘以16,取整,然后再将小数乘以16,取整,直到达到题目要求精度。得到结果:19.ae1H.

    这里写图片描述

    图4.十进制转十六进制
    # 2.R进制转十进制 ## 2.1 二进制转十进制 **方法为:**把二进制数按权展开、相加即得十进制数。(具体用法如下图)

    例题: 1001 0110B = ______ D

    **解析:**如下图所示。得到结果:150D.

    这里写图片描述

    图5.二进制转十进制

    2.2 八进制转十进制

    八进制转十进制的方法和二进制转十进制一样。

    例题: 26Q = ______ D

    **解析:**如下图所示。得到结果:22D.

    这里写图片描述

    图6.八进制转十进制

    2.3 十六进制转十进制

    例题: 23daH = ______ D

    **解析:**如下图所示。得到结果:9178D.

    这里写图片描述

    图7.十六进制转十进制

    3.二进制转八进制

    二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取成一位。

    例题: 1010 0100B = ____Q

    **解析:**计算过程如下图所示。得到结果:244Q.

    这里写图片描述

    图8.二进制转八进制

    4.二进制转十六进制

    二进制转换成八进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位。

    例题: 1010 0100B = ____H

    **解析:**计算过程如下图所示。得到结果:a4H.

    这里写图片描述

    图9.二进制转十六进制

    5.工欲善其事,必先利其器

    下面的表格是8位二进制所对应的十进制数值,对进制转换以及类似题目的理解非常有用:

    1 1 1 1 1 1 1 1 B
    128 64 32 16 8 4 2 1 D

    注:B:二进制
           D:十进制


    例题: 135D = ______ B

    **解析:**有了上面二进制对应十进制数值的表格,我们就可以将题目给的十进制135拆分为:128+7,再从表格中找到对应的数值,拼凑即可得到答案。
    135D = 128D + 7D = 1000 0111B


    作者:戴翔
    电子邮箱:daixiangcn@outlook.com
    简介:中华人民共和国公民,中国共青团员,CSDN博客专家,秦淮区疾控中心托管社会公益组织指南针工作室志愿者,创业公司研发中心负责人,在校大学生。


    展开全文
  • C语言实现进制转换

    万次阅读 多人点赞 2018-08-24 19:25:39
    1、十进制转换二进制 2、十进制转换八进制 3、十进制转换十六进制 4、二进制转换十进制 5、八进制转换十进制 6、十六进制转换十进制 0、 退 出 代码实现: #include&lt;stdio.h&gt; #include&...
  • 进制之间的相互转换

    千次阅读 2019-03-13 20:45:59
    一、(二、八、十六)转换为十进制 ...二进制转换为十进制 其他进制同理,将2换成进制数(八进制转换,将2变为8) 余数倒着写 100101 二进制转换为八进制 八进制转换为二进制 二进制转换为十六...
  • 进制转换方法总结——摘自百度

    万次阅读 多人点赞 2019-11-07 09:31:21
    今天朋友去面试,面试官问他八进制转换二进制方式原理,他突然间蒙逼了,在常见的计算机知识当中,这种最基础的知识,常常会被人给忘记,所以今天我来写一篇进制转换的总结,来复习巩固一下。 本文参考百度经验...
  • 进制转换

    千次阅读 2018-08-17 16:36:47
    一:十进制与二进制之间的转换 1.整数部分: 例:将十进制的168转换为二进制(结果:10101000) 第一步,将168除以2,商84,余数为0。 第二步,将商84除以2,商42余数为0。 第三步,将商42除以2,商21余数为0。 ...
  • 进制转换算法(转)

    万次阅读 多人点赞 2018-05-16 11:49:23
    来源-作者@speedboy007&...本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)进制转换算法(Convert)(二、八、十六进制) → (十进制)二进制 → 十进制八进制 → 十进制十...
  • 进制转换内容总结

    千次阅读 2019-02-28 08:42:42
    今天接触了进制转换的内容,即十进制,二进制,八进制,十六进制之间的相互转换。 一、基础内容 十进制:有十个基数 0,1,2,3,4,5,6,7,8,9 二进制:逢二进一,借一为二。 基数为0,1 八进制:逢八进一,借一为八...
  • 二进制 二进制就是计算机常用的进制,即逢二进一。例如:1010 八进制 ...上面就是对进制的简单介绍,下面就是对进制转换而进行介绍。 1.二进制转八进制 拿二进制数10010110举例 首先需要3个二进...
  • python将二进制转换为十进制

    万次阅读 多人点赞 2017-05-15 08:49:23
    例:将1110110转换为十进制数 解:先将其转换为字符串,再使用int函数,指定进制转换为十进制。 print(int("100111",2))
  • 整数之间的进制转换: #10进制转16进制: hex(16) ==&amp;gt; 0x10 10进制转8进制: oct(16) ==&amp;gt; 0x10` 16进制转10进制: `int('0x10', 16) ==&amp;gt; 16` 类似的还有oct(), bin() 字符串转...
  • 进制、八进制、十进制、十六进制之间的转换

    万次阅读 多人点赞 2018-12-28 23:55:23
    目录  1.十进制转2进制  2.二进制转十进制  ...
  • shell 中转换16进制10进制

    万次阅读 2012-10-10 17:28:55
    一、16进制转换成10进制 printf %d 0xF 15 或者 echo $((16#F)) 15 二、10进制转换成16进制 printf %x 15 f 或者 echo "obase=16;15"|bc F 三、10进制转换成8进制 printf %o 9 11 四、8进制...
  • a=bin2dec('1011001') %将二进制转换为10进制a = 89&gt;&gt; b=dec2bin(22) %将10进制转换为2进制b =10110&gt;&gt; c=hex2dec('9B3C') %将16进制转换为10进制c = 39740&gt;&gt; d=dec...
  • 进制和十进制转换

    万次阅读 多人点赞 2018-11-15 12:17:40
    一、十进制转换成二进制 1.1 正整数转二进制 要点:除二取余,倒序排列,高位补零。 方法:将正的十进制数除以二,得到的商再除以二,依次类推直至商为0或1时为止,然后在旁边标出各步的余数,最后倒着写出来,...
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是...
  • 进制转换二进制 C++实现十进制转换二进制 二进制转换十进制 C++实现二进制转换十进制 十进制与二进制之间的转换 十进制转换二进制 十进制对2整除,得到的余数的倒序即为转换而成的二进制 十进制转换二进制...
  • C语言二进制与十进制之间的转换

    万次阅读 多人点赞 2018-11-23 00:39:13
    进制与十进制之间的转换 #include&amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;gt; void convert(int n) { if(n &amp;amp;amp;amp;amp;gt; 1) { convert(n/2); } printf(&amp;amp;...
1 2 3 4 5 ... 20
收藏数 682,852
精华内容 273,140
关键字:

进制转换