精华内容
下载资源
问答
  • 二进制 二进制就是计算机常用的进制,即逢二进一。例如:1010 八进制 八进制即逢八进一。例如:626 十进制 ...十进制就是我们在计算中常用的进制,...1.二进制八进制二进制数10010110举例 首先需要3个二进...

    二进制

    二进制就是计算机常用的进制,即逢二进一。例如:1010

    八进制

    八进制即逢八进一。例如:626

    十进制

    十进制就是我们在计算中常用的进制,所以就不再举例(即逢十进一)

    十六进制

    十六进制与其它进制有所不同,在10到15用英文字母进行表示。

    上面就是对进制的简单介绍,下面就是对进制转换而进行介绍。

    1.二进制转八进制

    拿二进制数10010110举例

    首先需要3个二进制数各划分一个区域,不足时则补零。我们可以看出该二进制数为八位,我们需要补充一位,

    即010010110

    从左到右依次是:(计算方法是从右向左依次乘上2的n次幂,n从零开始,^符号表示次幂)

    0  1  0                                    0  1  0                                        1  1  0

    0*2^2+1*2^1+0*2^0=2          0*2^2+1*2^1+0*2^0=2               1*2^2+1*2^1+0*2^0=6

    然后合并得到226就是转换后的八进制数。

    2.二进制转十进制

    拿二进制数10010110举例

    这里就不需要划分区域,而是直接进行计算。(计算方法是从右向左依次乘上2的n次幂,n从零开始,^符号表示次幂)

    1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2^1+0*2^0=150

    3.二进制转十六进制

    拿二进制数100101100举例

    二进制转十六进制和二进制转八进制类似,不过转十六进制划分区域为4个,不足也是补零

    000100101100

    0001                                               0010                                                1100

    0*2^3+0*2^2+0*2^1+1*2^0=1        0*2^3+0*2^2+1*2^1+0*2^0=2        1*2^3+1*2^2+0*2^1+0*2^0=12(12也就是十六进制中的C)

    合并为12C

    4.八进制转二进制

    八进制转二进制是二进制转换成八进制的逆过程。(不足时也是补零)

    拿八进制数226举例(需要取余数,采用倒叙过程)

    2                                                         2                                                                  6

    2/2=1(余数为0)                                  2/2=1(余数为0)                                            6/2=3(余数为0) 

    1/2=0(余数为1)                                  1/2=0(余数为1)                                            3/2=1(余数为1)   

                                                                                                                                  1/2=0(余数为1)    

                                                      

    所以取余数为10,不足三位,则补零,为010.                                                       余数为110

    最后合并,最终转换的二进制数为10010110

    5.八进制转十进制

    拿八进制数226举例(由右向左依次乘以8的n次幂,n从零开始)

    2*8^2+2*8^1+6*8^0=150

    6.八进制转十六进制

    八进制不能直接转换为十六进制。可以采用间接转换法来进行转换。

    1.先把八进制转换为二进制,然后再转换为十六进制。

    2.先把八进制转换为十进制,然后再转换为十六进制。

    拿八进制数226举例,从上面可以看出转换为二进制为10010110,然后我们再把它转换为16进制。

    划分区域

    1001                                                   0110

    1*2^3+0*2^2+0*2^1+1*2^0=9            0*2^3+1*2^2+1*2^1+0*2^0=6

    合并为96,所以八进制226转换为十六进制为96.

    第二种也是一样,小编在这里就不再举例,大家可以试试看,也是一样的结果。

    7.十进制转二进制

    十进制转二进制就是二进制转十进制的逆过程。同样,我们也拿十进制150来举例。

    150/2=75(余数为0)

    75/2=37(余数为1)

    37/2=18(余数为1)

    18/2=9(余数为0)

    9/2=4(余数为1)

    4/2=2(余数为0)

    2/2=1(余数为0)

    1/2=0(余数为1)

    整合为10010110即是转换的二进制。

    8.十进制转八进制

    十进制转八进制和八进制转十进制是互逆的,我们拿150来举例。

    150/8=18(余数为6)

    18/8=2(余数为2)

    2/8=0(余数为2)

    整合为226,得到八进制数。

    9.十进制转十六进制

    十进制转十六进制和十六进制转十进制是互逆的,我们拿150来举例。

    150/16=9(余数为6)

    9/16=0(余数为9)

    整合为96,得到十六进制数。

    10.十六进制转二进制

    十六进制转二进制和二进制转十六进制是互逆的,我们拿12C来举例。(不足的位数补零)

    1                                                             2                                                               C(转化为12)

    1/2=0(余数为1)                                      2/2=1(余数为0)                                         12/2=6(余数为0)  

                                                                  1/2=0(余数为1)                                          6/2=3(余数为0)

                                                                                                                                    3/2=1(余数为1)

                                                                                                                                    1/2=0(余数为1)

    0001                                                     0010                                                            1100

    整合为000100101100

    11.十六进制转八进制

    八进制不能直接转换为十六进制。那么十六进制也不能直接转化为八进制,可以采用间接转换法来进行转换。

    1.先把十六进制转换为二进制,然后再转换为八进制。

    2.先把十六进制转换为十进制,然后再转换为八进制。

    这里就不再介绍转化的过程,和八进制转化为十六进制一样,这里就是一个逆过程。

    12.十六进制转十进制

    拿十六进制96来举例(由右向左依次乘以16的n次幂,n从零开始)

    9*16^1+6*16^0=150

    好了,上面就是二进制,八进制,十进制,十六进制之间的转换。我们可以进行分类记忆,并总结规律。

    注意:1.我们在将进制数除以2的时候一定要选择逆顺序。

               2.在乘以次幂的时候也是从右往左的顺序,由零次幂依次递增。

               3.在选择区域的时候一定要看清是转换十六进制还是八进制,否则就会出错,记住不足的位数一定要补零哦。

    这些就是小编要提醒的注意事项,当然了,通过实例,自己多多练习,相信进制的转换对于大家来说就是很简单的啦。

    感谢朋友们对小编文章的评价哦!小编在后期也补充了小数部分的进制转换。请参考文章https://blog.csdn.net/mez_Blog/article/details/102468841希望大家多多支持哦^_^

    Endeavor

    展开全文
  • 二进制八进制十六进制转换十进制 二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是N进制,那么: 对于整数部分,从右往左看,第i位的位权...

    进制转换:二进制、八进制、十六进制、十进制之间的转换

    不同进制之间的转换在编程中经常会用到,尤其是C语言。

    将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

    假设当前数字是N进制,那么:

    对于整数部分,从右往左看,第i位的位权等于Ni-1

    对于小数部分,恰好相反,要从左往右看,第j位的位权为N-j

    更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是1,那么它所表示的数值大小就是该位的位权。

    1) 整数部分

    例如,将八进制数字53627转换成十进制:

    53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

    从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    注意,这里我们需要以十进制形式来表示位权。

    再如,将十六进制数字9FA8C转换成十进制:

    9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

    从右往左看,第1位的位权为160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… n位的位权就为16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    将二进制数字转换成十进制也是类似的道理:

    11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

    从右往左看,第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4,第4位的位权为23=8,第5位的位权为24=16 …… n位的位权就为2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    2) 小数部分

    例如,将八进制数字423.5176转换成十进制:

    423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… m位的位权就为 8-m

    再如,将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… m位的位权就为 2-m

    更多转换成十进制的例子:

    二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

    二进制:101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

    八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

    八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

    十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

    将十进制转换为二进制、八进制、十六进制

    将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

    1) 整数部分

    十进制整数转换为N进制整数采用“N取余,逆序排列”法。具体做法是:

    N作为除数,用十进制整数除以N,可以得到一个商和余数;

    保留余数,用商继续除以N,又得到一个新的商和余数;

    仍然保留余数,用商继续除以N,还会得到一个新的商和余数;

    ……

    如此反复进行,每次都保留余数,用商接着除以N,直到商为0时为止。

    把先得到的余数作为N进制数的低位数字,后得到的余数作为N进制数的高位数字,依次排列起来,就得到了N进制数字。

    下图演示了将十进制数字36926转换成八进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151J30K46.png

    从图中得知,十进制数字36926转换成八进制的结果为110076

    下图演示了将十进制数字42转换成二进制的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170915/1-1F9151K641Z0.png

    从图中得知,十进制数字42转换成二进制的结果为101010

    2) 小数部分

    十进制小数转换成N进制小数采用“N取整,顺序排列”法。具体做法是:

    N乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

    将积的整数部分取出,再用N乘以余下的小数部分,又得到一个新的积;

    再将积的整数部分取出,继续用N乘以余下的小数部分;

    ……

    如此反复进行,每次都取出整数部分,用N接着乘以小数部分,直到积中的小数部分为0,或者达到所要求的精度为止。

    把取出的整数部分按顺序排列起来,先取出的整数作为N进制小数的高位数字,后取出的整数作为低位数字,这样就得到了N进制小数。

    下图演示了将十进制小数0.930908203125转换成八进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91Q20520335.png

    从图中得知,十进制小数0.930908203125转换成八进制小数的结果为0.7345

    下图演示了将十进制小数0.6875 转换成二进制小数的过程:

    http://c.biancheng.net/cpp/uploads/allimg/170918/1-1F91QHI2I2.png

    从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011

    如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

    十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345

    十进制数字 42.6875 转换成二进制的结果为 101010.1011

    下表列出了前17个十进制整数与二进制、八进制、十六进制的对应关系:

    十进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    二进制

    0

    1

    10

    11

    100

    101

    110

    111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    10000

    八进制

    0

    1

    2

    3

    4

    5

    6

    7

    10

    11

    12

    13

    14

    15

    16

    17

    20

    十六进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    A

    B

    C

    D

    E

    F

    10

    注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

    十进制0.51对应的二进制为0.100000101000111101011100001010001111010111...,是一个循环小数;

    十进制0.72对应的二进制为0.1011100001010001111010111000010100011110...,是一个循环小数;

    十进制0.625对应的二进制为0.101,是一个有限小数。

    二进制和八进制、十六进制的转换

    其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919102I0949.png

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674

    八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919103A2R7.png

    从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F919104H9539.png

    从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C

    十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

    http://c.biancheng.net/cpp/uploads/allimg/170919/1-1F91910553H50.png

    从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110

    C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    展开全文
  • 对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来...将二进制八进制十六进制转换十进制二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。...

    对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来阅读。但是本节所讲的内容是学习编程的基础,是程序员的基本功,即使现在不学,迟早也要回来学。

    上节我们对二进制、八进制和十六进制进行了说明,本节重点讲解不同进制之间的转换,这在编程中经常会用到,尤其是C语言。

    将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

    假设当前数字是 N 进制,那么:

    对于整数部分,从右往左看,第 i 位的位权等于Ni-1

    对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j。

    更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是 1,那么它所表示的数值大小就是该位的位权。

    1) 整数部分

    例如,将八进制数字 53627 转换成十进制:

    53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

    从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… 第n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    注意,这里我们需要以十进制形式来表示位权。

    再如,将十六进制数字 9FA8C 转换成十进制:

    9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

    从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    将二进制数字转换成十进制也是类似的道理:

    11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

    从右往左看,第1位的位权为 20=1,第2位的位权为 21=2,第3位的位权为 22=4,第4位的位权为 23=8,第5位的位权为 24=16 …… 第n位的位权就为 2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    2) 小数部分

    例如,将八进制数字 423.5176 转换成十进制:

    423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… 第m位的位权就为 8-m。

    再如,将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… 第m位的位权就为 2-m。

    更多转换成十进制的例子:

    二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

    二进制:101.1001 = 1×22 + 0×21 + 1×20+ 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

    八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

    八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

    十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

    将十进制转换为二进制、八进制、十六进制

    将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

    1) 整数部分

    十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:

    将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;

    保留余数,用商继续除以 N,又得到一个新的商和余数;

    仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;

    ……

    如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。

    把先得到的余数作为 N 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,依次排列起来,就得到了 N 进制数字。

    下图演示了将十进制数字 36926 转换成八进制的过程:

    bf34eb60b56d9343bed9a15e54e49db6.png

    从图中得知,十进制数字 36926 转换成八进制的结果为 110076。

    下图演示了将十进制数字 42 转换成二进制的过程:

    5ac13e9d9daa3fc7c4626ae596e3c4ed.png

    从图中得知,十进制数字 42 转换成二进制的结果为 101010。

    2) 小数部分

    十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是:

    用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

    将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;

    再将积的整数部分取出,继续用 N 乘以余下的小数部分;

    ……

    如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。

    把取出的整数部分按顺序排列起来,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,这样就得到了 N 进制小数。

    下图演示了将十进制小数 0.930908203125 转换成八进制小数的过程:

    67bbce757e5e2cc276adda32ef3cc16e.png

    从图中得知,十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345。

    下图演示了将十进制小数 0.6875 转换成二进制小数的过程:

    49ecdf92fe173fd20d7fb1abeffeaadb.png

    从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011。

    如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

    十进制数字 369260.930908203125 转换成八进制的结果为 110076.7345;

    十进制数字 42.0.6875 转换成二进制的结果为 101010.1011。

    下表列出了前 17 个十进制整数与二进制、八进制、十六进制的对应关系:

    十进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    二进制

    0

    1

    10

    11

    100

    101

    110

    111

    1000

    1001

    1010

    1011

    1100

    1101

    1110

    1111

    10000

    八进制

    0

    1

    2

    3

    4

    5

    6

    7

    10

    11

    12

    13

    14

    15

    16

    17

    20

    十六进制

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    A

    B

    C

    D

    E

    F

    10

    注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

    十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...,是一个循环小数;

    十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...,是一个循环小数;

    十进制 0.625 对应的二进制为 0.101,是一个有限小数。

    二进制和八进制、十六进制的转换

    其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

    4d20189158bd5009f71e26664e7c201d.png

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674。

    八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

    caba1e8b4bb541f952c4f28fda3e6751.png

    从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011。

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

    3646535f2f4ebfb8ff87273857a981bc.png

    从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C。

    十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

    39e2a46be45746662e6a072e460c5df5.png

    从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110。

    在C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    总结

    本节前面两部分讲到的转换方法是通用的,任何进制之间的转换都可以采用,只是有时比较麻烦而已。二进制和八进制、十六进制之间的转换有非常简洁的方法,所以没有采用前面的方法。

    展开全文
  • 二进制八进制十进制十六进制关系及转换

    万次阅读 多人点赞 2019-02-21 21:20:22
    二进制八进制十进制十六进制之间的关系是什么?浮点数是什么回事? 本文内容参考自王达老师的《深入理解计算机网络》一书<中国水利水电出版社&amp...

    二进制,八进制,十进制,十六进制之间的关系是什么?相互之间如何转换?

    本文内容参考自王达老师的《深入理解计算机网络》一书<中国水利水电出版社>

    一、数制解释:

    • 1、编程中经常使用的数制分类(“你编程时能使用的数制全部在这里了”):
      • ⑴、十进制 –十进制是我们生活中使用得最频繁的进制了。
        十进制的基数是10,也就是说,十进制有10个数字符号,分别是0,1,2,3,4,5,6,7,8,9。最大的数码是9(最大的数码是进制基数减1),最小的数码是0,我们平常随便写一些数字,比如:2356,35,109等等,默认这些都是十进制数(虽然2356,35也可能是表示八进制数)。如果你需要更明确表示是10进制数,可以这么表示:(2356)D–这表示了这个2356表示的是一个十进制数。那么,数制和基数的关系怎么体现呢?通过表示一个数的具体数制组成来体现,比如2356:6 * 100+5 * 101+3 * 102+2 * 103=2356。我们可以发现,给出一个数,首先从个位数开始,个位数值乘以基数的0次方(一定要记住,这里必须是从0次方开始的),十位数乘以基数的1次方,百位数乘以基数的2次方…以此类推,一直到最高位,最后将结果累加起来,这里就完全能看出2356是如何通过十进制表示的了。

      • ⑵、二进制 二进制是计算机唯一使用的进制
        二进制是计算机唯一使用的进制,因为计算机的根本是电路,电路只能表示两种情况,一种情况为没有电,可以表示数字0,一种情况为有电,可以表示数字1,再无第三种情况(有兴趣可以自行了解或者关注后期博文,这里不再赘述),所以很自然的,只有两个数字符号(0,1)的进制,就是二进制。二进制的基数是2,它的最大数码也是基数减1,就是1,最小数码是0。如果需要用二进制来表示一个数,只能是不断的01001001001111011等(想学代码的都知道摩尔定律以及集成电路,晶体管等等,一个集成电路板上面有几十亿个晶体管,所以你不用担心二进制表示数制会有限制,它可以是很大,超出你的想象),不可能出现第三个数字符号。如果出现了,就绝对不是二进制表示。如果你想明确地表示是二进制,可以这么表示:(010100101)B。
        这里就有一个问题了,比如我这么描述,这是我用的第0000 0101台电脑,这是她买的第0000 0110台法拉利,那么,你对这个0000 0101和0000 0110有确切的概念吗?具体是多少你知道吗?所以,我们在已经习惯了10进制的前提下,对二进制是非常不习惯,甚至觉得二进制是晦涩难懂的,那么,二进制能不能转换成十进制呢?可以,转换的过程同时也体现了数制和基数的关系。
        0000 0110转换为10进制:(二进制里面没有"个位、十位、百位",只能通过从左到右或者从右到左第几位来描述),从右往左开始,第一位是0,进制的基数是2,那么就是0 * 20 ,第二位是1,就是1 * 21 ,第三位是1,就是1 * 22,第四位及以上都是0了,那么不必再计算,于是0000 0110转换成十进制是0 * 20+1 * 21+1 * 22=6;0000 0101转换成十进制是5。 结果出来了,那么你对5,6这种十进制表示就有非常明确的概念了。
        在上面的十进制中也涉及到了转换过程,也是利用数位上的值乘以进制基数的幂次方的情况,但是2356经过转换以后还是2356,而二进制中却将0000 0110转换成了6,0000 0101转换成了5这些表示形式,是因为2356本身就是10进制表示,转换成10进制,所以没有任何变化,而0000 0110,0000 0101原先是二进制表示,转换成了10进制所以有变化,包括后面即将提到的八进制以及十六进制,我们都是需要转换成10进制才能有确切的概念,八进制是利用数位上的值乘以进制基数(8)的幂次方来转换,十六进制是利用数位上的值乘以进制基数(16)的幂次方来转换。在后期的编程语言学习中会存在大量的二、八、十六进制转换为十进制的情况。所以整个转换过程需要熟练掌握!

      • ⑶、八进制、十六进制 主要作用就是将数值的识别和表达简单化
        八进制在编程语言范围内没有固定的使用情形,它的基数是8,总共有8个数字符号(0,1,2,3,4,5,6,7),八进制的最大数码是基数减1,就是7,最小数码是0,如果你要确切表示一个数是八进制的,可以这么表示(12565)O或者是(12565)Q,在C和C++中八进制的表示是额外在数值前面加一个0,比如123是十进制,而0123就是八进制。
        十六进制在编程语言范围内也没有固定的使用情形(计算机网络中最新的IPv6地址使用的就是十六进制,计算机系统的注册表也会用到),它的基数是16,总共有16个数字符号(0,1,2,3,4,5,6,7,8,9,A[表示10],B[表示11],C[表示12],D[表示13],E[表示14],F[表示15]),因为0-9不够用,所以就借了6个字母,字母不区分大小写,对比前面几种进制,只要一个数的表示中出现了字母,就一定是16进制。十六进制的最大数码也是基数减1,就是15(F),最小数码也是0,如果你需要确切表示一个数是十六进制的,可以这么表示(56BBA)H,在C和C++中,十六进制的表示是额外在数值前面加一个0x,比如123是十进制,0x123是十六进制。
        八进制和十六进制转换成十进制,请根据二进制的转换说明自己试一试(替换对应的进制基数就可以了)。

        计算机中使用的都是二进制,八进制和十六进制的出现其实都不是计算机的需要,它们的出现完全是出于表达和识别的方便性考虑的。
        一个较大的数用二进制表示就太长了,比如一个int类型的100(4个字节,总共32位),用二进制表示就是0000 0000 0000 0000 0000 0000 0110 0100,这还是一个比较小的数,如果更大,将会更复杂,写这么长,确实有些不便,于是,就出现了更简易的八进制,十进制,十六进制,数制越大,表示一个数所需的数码位数就越少,所以C和C++代码中不能直接输入二进制,但是允许输入八进制、十进制、十六进制。
        那为什么没有出现什么七进制,九进制呢?因为8,16分别是2的3次方、4次方。使得这3种进制之间转换起来很方便。
        八进制、十六进制即缩短了数的表示位数,同时保持了二进制数的表达特点。
        -----引用自王达老师《深入理解计算机网络》

      • ⑷、二、八、十六进制转换成十进制 –上文提到的其他进制转换成十进制都是用乘的,很明显这里是上文的逆过程,都是用除的
        十进制转换成二进制(你如果喜欢钻研的话,可以将二进制转换成十进制,以及十进制转换成二进制的过程并排成两列放在一起,你就能看明白很多东西):
        下面我直接上示例了:
        十进制48转换成二进制(由于工具有限,我将用表格形式说明相互间的关系,希望有兴趣又对这些知识点并不熟悉的码友能根据我的描述用纸笔再演练一遍):

        计算过程结果余数
        48/2240
        24/2120
        12/260
        6/230
        3/211

        计算过程主要说明了整个演算的步骤以及各个值是如何得来的,因为是转换成二进制。所以用48除以进制基数2,直到结果为1(为什么说直到结果为1,因为不管任何数,按照上面的演算方式不断除以2,最后的结果一定是1),然后将结果的1放在最前面,后面依次写上每一步的余数,注意,这里每一步的余数是倒序(也就是从下往上排列),也就是说排在结果1后面的余数是计算过程3/2的余数,然后是计算过程6/2的的余数…所以最后得出十进制数48的二进制表示是110000。如果是byte类型,需要在前面补0,直至8位:0011 0000,如果是int类型就是:0000 0000 0000 0000 0000 0000 0011 0000。
        十进制550转换成二进制:

        计算过程结果余数
        550/22750
        275/21371
        137/2681
        68/2340
        34/2170
        17/281
        8/240
        4/220
        2/210

        结果为:10 0010 0110,如果是int类型,则补齐32位,结果是:0000 0000 0000 0000 0000 0010 0010 0110。
        实际上,二进制为什么需要从最后的余数开始,你们仔细思考一下:是不是和二进制转换成十进制的时候,进制基数2的幂次方是从0开始的有关。
        还有一个问题需要强调,就是为什么上面表格中的奇数除以2,不会出现浮点数,这是因为,上面的除法都是整数类型,不涉及浮点数类型,所以,整数类型的除法结果都是整数,直接舍弃了小数部分,所以31除以2,结果是15,而不会是15.5。
        试验: Java中整数的除法运算直接舍弃了小数部分,仅保留整数部分!
        八进制转换成十进制:
        这里我就直接上示例了:
        十进制48转换位八进制的表示:

        计算过程结果余数
        48/860

        结果为60,这里需要特别注意的是,千万不要受二进制的影响,非要得到结果为1,这里不可能为1,因为进制基数变成了8,所以,48/8得出的结果是6,已经比进制基数8更小了,就没有再计算下去的必要(因为再计算下去就是6/8,结果是0了),于是从结果6开始,倒序排列各步骤的余数,得到的结果就是60(10进制转换成8进制的时候,一旦得到的结果比8更小,则说明是最后一步了)。
        十进制360转换为八进制表示:

        计算过程结果余数
        360/8450
        45/855

        结果5比进制基数8小,所以结果就是550。
        十六进制转换为十进制:
        十进制48转换位十六进制的表示:

        计算过程结果余数
        48/1630

        十六进制与8进制一样,只要得到的结果比进制基数更小,则停止运算,所以结果是30。
        十进制100转换位十六进制的表示:

        计算过程结果余数
        101/1665

        结果为:65。

      • ⑸、二、八、十六进制间的相互转换
        二进制转换为八进制:
        这里转换的时候是有技巧的,之前说过了,为什么是八进制、十六进制,而不是七进制,九进制,因为8=23,16=24
        所以二进制转换成八进制的时候,只需要将二进制的表示从右往左开始,每三位二进制数为1组 ,分到最后如果不足3位,那么剩下多少位就是多少位,再用每组的二进制的每一位数从右往左依次乘以20、21、22,然后相加,得出一组的结果,最后将所有组的结果相连,得出最终的结果(这里注意了,二进制转换为八进制的时候是分组了,并且最后是将每组的结果相连,而不是相加)。
        这里,我具体举个例子:
        二进制(0011 0101)B转换为八进制表示是什么结果:
        首先,将二进制从右至左进行分组:
        分别是 第一组:101 第二组:011 第三组:00。实际上,第三组没意义了,因为都是0,我们来关注前两组
        第一组计算过程是:1 * 20+0 * 21+1 * 22=5;
        第二组计算过程是:0 * 20+1 * 21+1 * 22=6;
        所以最后的结果是65。也就是用6和5直接相连,而不是相加,这里还要注意一下相连的顺序问题,是6–5的方向。
        PS:这里你需要回顾一下二进制转换10进制的方法。加深一下印象,好区别(以上二进制转换成十进制是53)。
        二进制转换为十六进制
        二进制转换为十六进制就是将二进制每四位二进制为一组,其他与八进制转换为二进制一样。
        八进制转换为二进制
        只需要将八进制的每一个数用三位二进制表示,然后相连既可以。
        十六进制转换为二进制
        只要需要将十六进制的每一个数用四位二进制表示,然后相连即可。
        八进制转换为十六进制
        不要以为八和十六之间存在倍数2的关系就有什么捷径,实际上没有,需要通过二进制中转一下。
        所以需要先将八进制转换成二进制,在转换成十六进制。
        十六进制转换成八进制
        需要将十六进制转换成二进制,再将二进制转换成八进制。

      • ⑹、浮点数的表示与转换 –浮点数说白了就是我们常说的小数,只不过专业的叫法是"浮点数"
        上面说的都是有关二进制,八进制,十进制,十六进制整数之间的相互转换,现在我们来看一下这些进制的浮点数如何表示以及相互转换的(主要说明二、八、十六进制的浮点数如何转换成十进制的浮点数)。
        相关进制的浮点数表示其实和整数的表示是一样的,比如二进制的浮点数表示:
        这里我直接上示例了:
        (0.1101)B就是表示这是一个二进制的浮点数。
        (0.1101)O或者(0.1101)Q就是表示这是一个八进制的浮点数。
        (0.1101)D就是表示这是一个十进制的浮点数。
        (0.1101)H就是表示这是一个十六进制的浮点数。
        那么二、八、十六进制的浮点数如何转换成十进制的浮点数呢?
        这里我以二进制位例子详细说明,八进制和十六进制的转换方法与二进制是一样的,只是需要将对应的进制基数替换一下就行。
        (0.1101)B这样的二进制浮点数转换成十进制的浮点数是多少呢?
        转换的方式为:先提一个问题:为什么我这里举例是纯小数(整数部分为0),因为整数部分的转换和整数的转换是一样的,上面已经说明了,这里仅说明浮点数的转换。
        需要将(0.1101)B转换为十进制的浮点数,首先从小数点右起第一位开始,这里的右起第一位是1,就用1 * 2-1,第二位是1,继续用1 * 2-2,第三位是0,用0 * 2-3,第四位是1,用1 * 2-4,没有第五位了,如果有,则继续按照以上逻辑以此类推,直到二进制的所有有效位数用完,然后将所有的结果全部相加,即得到了十进制的浮点数表示。
        这里再清晰写一遍:
        (0.1101)B转换为10进制的浮点数过程:
        1 * 2-1+1 * 2-2+0 * 2-3+1 * 2-4 = (0.6875)D。
        这里需要特别注意的是:整数部分的转换幂指数是从0开始的,但是浮点数转换的幂指数是从-1开始的,这个非常的重要,并且位数和幂指数是对应的,第一位幂指数是-1,第二位幂指数是-2,第三位幂指数是-3…以此类推,最后将所有结果相加。
        八进制浮点数转换为十进制浮点数只需要将进制基数变为8,十六进制浮点数转换为十进制浮点数只需要将进制基数变为16。如果不熟悉的码友可以自行用纸笔演练一遍,只是要牢记,需要替换上对应的进制基数。
        实际上,浮点数的二进制、八进制、十进制、十六进制之间的相互转换可以分为两部分,小数点左边的整数部分转换与上文提到的整数转换完全一致,小数点右边的小数部分转换与上文提到的浮点数转换也完全一致(再次提醒,需要替换成对应的进制基数),所以一个浮点数的转换,可以分成整数部分的转换,小数部分的转换,再将转换结果通过小数点"."连起来就是最后的结果了。
        在此,再次感谢王达老师的《深入理解计算机网络》一书对本文的启发!

    PS:时间有限,有关计算机进制的内容会持续更新!今天就先写这么多,如果有疑问或者有兴趣,可以加QQ:2649160693,并注明CSDN,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正!

    展开全文
  • 二进制八进制十六进制转换十进制 二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是 N 进制,那么: 对于整数部分,从右往左看,第 i 位的...
  • 二进制 → 十进制八进制 → 十进制十六进制 → 十进制 (十进制) → (二、八、十六进制) 十进制 → 二进制十进制 → 八进制十进制 → 十六进制 (二进制) ↔ (八、十六进制) 二进制
  • (二、八、十六进制) → (十进制二进制十进制 八进制十进制 十六进制十进制十进制) → (二、八、十六进制十进制二进制 十进制八进制 十进制十六进制 ...
  • 八进制十六进制十进制之间的转换可通过二进制作为中介。 十进制小数转二进制小数 乘不尽的小数进制转换 0.8、0.6、0.2... ...一些数字在进制之间的转化过程中确实存在麻烦。 就比如0.8的十六进制,无论怎么...
  • 此文章转载的,与大家...(二、八、十六进制) → (十进制二进制十进制 八进制十进制 十六进制十进制十进制) → (二、八、十六进制十进制二进制 十进制八进制 十进制 →...
  • 二进制八进制十进制十六进制的定义就不再赘述了 二进制 逢二进一; 八进制 逢八进一 ;十进制 逢十进一;十六进制 逢十六进一; 首先是我们生活中常用的十进制转换其他进制: 我们用除积倒取余 法,就是说...
  • (一)二进制十进制 如:  66 = 64 + 2;  128 64 32 16 8 4 2 1  0 1 0 0 0 0 1 0 负十进制转换二进制的方式  1)先将该整数的绝对值转换为二进制,然后进行按位取反再加1.  如:  -...
  • 十进制二进制转换2.1对应关系2.2举例一:二进制1011转换十进制2.3举例二:二进制10111转换十进制2.3举例三:十进制45转换二进制2.4举例四:十进制小数0.25转换二进制3.八进制二进制3.1对应关系3.2举例一:...
  • 二进制八进制之间的转换  二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:  八进制: 0 1 2 3 4 5 6 7  二进制:000 001 010 011 100 101 110 111  实例:  27.651(8) 010111....
  • 二进制转换 了解进制的转换(二、八、十六二进制二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。 八进制:在八进制数中,每一位用0—7八个...
  • 进制十进制八进制十六进制相互转换: 不同进制之间的转换是计算机学科同学必学的,网上有很多这方面的知识,今天搬运过来整理一下,与大家分享,希望与大家一起进步。 二进制转换: 1、十进制二进制: 除2取余数...
  • 二进制八进制十六进制转换十进制 二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是N进制,那么: 对于整数部分,从右往左看,第i位的位权...
  • 模块包含了下面的各种转换: 二进制转十进制二进制转化为八进制二进制转化为十六进制 八进制转化为十进制八进制转化为二进制八进制转化为十六进制 十进制转二进制十进制转化为八进制十进制转化为十六进制 十六进制...
  • 文章目录前言1、二进制1.1、二进制八进制1.2、二进制十进制1.2、二进制十六进制2、八进制1.1、八进制二进制1.2、八进制十进制1.2、八进制十六进制3、十进制3.1、十进制二进制3.2、十进制八进制3.3、...
  • 进制转换 二进制十进制八进制十六进制相互转换 进制介绍 一、二进制 二进制(binary)是在数学和数字电路中指以2为基数的记数系统,是以2为基数代表系统的二进位制。 用两个不同的符号0(代表零)和1(代表一...
  • 十进制二进制八进制十六进制的解意和详细转换 十进制 二进制 八进制 十六进制进制转换二进制进制转换八进制进制 十进制转换十六进制 二进制进制转换十进制进制转换八进制进制 二进制转换成...
  • 做为 一名Java初学者,今天我学会了二进制八进制十进制十六进制。虽然很简单,但还是难倒很多初学者,下面我们一起看一下我的分析,希望可以帮助你们。   首先我们要知道基数,比如:二进制的基数是2、...
  • 二进制八进制十进制十六进制相互之间的转换: 1.二进制十进制 1)十进制二进制 十进制二进制,把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0。最后将所有余数倒序排列,得到转换结果...
  • 今天来总结一下各种进制转换问题,详细齐全易于理解,希望对你有帮助哦! 先从我们最熟悉的十进制入手吧,其他进制与十进制的转换方法都是一样的...先来贴一张进制转换表: 一、十进制转换成二进制八进制十六进制
  • Python中实现的进制间的转换。 在python中可以使用Python的内置函数进行进制间的转换。 bin():其他进制转二进制 oct():其他进制转...二进制八进制十六进制的形式 二进制:以“0b”开头,如:0b111为十进制...
  • 二进制八进制十进制十六进制 一、 进制的概念 在计算机语言中常用的进制有二进制八进制十进制十六进制十进制是最主要的表达形式。 对于进制,有两个基本的概念:基数和运算规则。 基数:基数是指一种...
  • 一个很好的ASCII码转换二进制/八进制/十进制/十六进制/ASCII查询的 工具,很实用的

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,359
精华内容 12,943
关键字:

二进制八进制十进制十六进制转换表