精华内容
下载资源
问答
  • 十进制转R进制 十进制转二进制 十进制整数转二进制 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到...

    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

    展开全文
  • 十进制就是我们在计算中常用的进制,所以就不再举例(即逢十进一) 十六进制 十六进制与其它进制有所不同,在10到15用英文字母进行表示。 上面就是对进制的简单介绍,下面就是对进制转换而进行介绍。 1.二进制...

    二进制

    二进制就是计算机常用的进制,即逢二进一。例如: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+1*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

     

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

    万次阅读 多人点赞 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/2 24 0
        24/2 12 0
        12/2 6 0
        6/2 3 0
        3/2 1 1

        计算过程主要说明了整个演算的步骤以及各个值是如何得来的,因为是转换成二进制。所以用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/2 275 0
        275/2 137 1
        137/2 68 1
        68/2 34 0
        34/2 17 0
        17/2 8 1
        8/2 4 0
        4/2 2 0
        2/2 1 0

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

        计算过程 结果 余数
        48/8 6 0

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

        计算过程 结果 余数
        360/8 45 0
        45/8 5 5

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

        计算过程 结果 余数
        48/16 3 0

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

        计算过程 结果 余数
        101/16 6 5

        结果为: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,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正!

    展开全文
  • C/C++:十进制转为二进制(n进制转为十进制

    万次阅读 多人点赞 2016-12-05 23:13:33
    十进制转换为二进制1.在二进制中,奇数的末尾一定是1,而偶数的末尾一定是0. 一般而言,对于数字n,其二进制的最后一位是n%2;这里值得注意的是,计算的第一位数字其实是待输出的二进制数的最后一位,(所以这里...

    I. 十进制转换为二进制

    1.在二进制中,奇数的末尾一定是1,而偶数的末尾一定是0. 一般而言,对于数字n,其二进制的最后一位是n%2;这里值得注意的是,计算的第一位数字其实是待输出的二进制数的最后一位,(所以这里可以定义一个数组来存放二进制数0或1;当然也可以采用函数递归来实现);要获得下一位数字,必须把原数字除以2。如果计算结果是偶数,那么二进制的下一位数就是0;如果是奇数,就是1.

    把上面的话翻译过来,如图:
    这里写图片描述

    #include <stdio.h>
    #include <stdlib.h>
    int main(void)
       {
        int ch[16]={0};  //存放二进制数0和1
        int i,j;
        int variable,index;
        printf ("Please enter a value(0~32767):\n");
        printf (" (Enter any letter to quit.)\n");
        while (scanf ("%d",&variable) == 1) 
                   //scanf()函数输入成功,返回读取的个数
        {
          for (index=0;index<15;index++)
          {
            i=variable%2;  //取2的余数
            j=variable/2;  //取被2整除的数
            variable=j;    //将得到的商赋给变量variable,用来下次求%,获得下一个数
                  
            ch[index]=i;                //将余数存放在数组中
          }
          for(index=15;index>=0;index--)/*这里下标不能从0~15,必须     
          {                             *是15~0;因为我们计算出的第       
           printf ("%d",ch[index]);     *一个数字是待输出二进制数的
            if (index%4 == 0)           *最后一位,而先被存入到了数
           {                            *组中
            printf (" ");               */
               //每输出4个元素,输出一个空格
           }
          }
          printf ("\n");  
        }
       system ("pause");
       return 0;
       }
    

    这里写图片描述

    附:可以用递归来实现:

    #include <stdlib.h>
    #include <stdio.h>
    int main(void)
       {
       void func_binary(unsigned long n);  //函数声明
       unsigned long number;
       printf ("请输入十进制数字:\n");
       while (scanf ("%d",&number) == 1)
          {
            printf ("二进制数为:\n");
            func_binary (number);
            putchar('\n');
            printf ("请再次输入(任意字符结束):\n");
          }
       printf ("Good.\n");
       system ("pause");
       return 0;
       }
    
    void func_binary(unsigned long n)   //定义函数
       {
         int r_value;
         r_value=n%2;
         if (n>=2)
         {
           func_binary (n/2);
         }
         putchar(r_value == 0?'0':'1');
         return;
       }
    

    这里写图片描述

    II.n进制转为十进制
    实现功能:输入任意一个数字,同时说明是几进制,则将其转为十进制数。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define LENGTH 100
    int main(void)
       {
         long t1;
         int i,n,t,t3;
         char a[LENGTH];    
         printf ("请输入数字:\n");
         gets(a);        //输入n进制数存放到数字a中
         strupr(a);      //将a中的小写字母转为大写字母
         t3=strlen (a);  //求出数组a的长度
         t1=0;
         printf ("请输入进制数(2 or 8 or 16):\n");
         scanf ("%d",&n); //输入的是几进制数
         for (i=0;i<t3;i++)
         {
          if (a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n) //判断输入数与进制数是否相符合
          {
           printf ("输入错误.\n");
           exit (0);       //退出程序
          }
          if (a[i]>='0'&&a[i]<='9')  //判断是否为数字
          {
           t=a[i]-'0';
          }
          else if (n>=11&&(a[i]>='A'&&a[i]<='A'+n-10)) //判断是否为字母
           t=a[i]-'A'+10;  //求出字母所代表的十进制数
          t1=t1*n+t;       //求出最终转换成的十进制数
         }
    
         printf ("十进制数是:%ld\n",t1);  //打印结果
        system ("pause");
        return 0;
       }
    

    这里写图片描述




    展开全文
  • C语言算法之将十进制数转换成二进制数

    万次阅读 多人点赞 2018-06-20 14:35:29
    导语:在C语言中没有将...下面给大家讲述一下如何编程实现将十进制数转换成二进制数。 先将源代码展示给大家: #include &lt;stdio.h&gt; void main() { //进制转换函数的声明 int transfer(int x)...
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是...
  • import java.math.BigInteger; /** * @author 进制转换 * */ public class cons { ... @SuppressWarnings("unused") ... // TODO 十六进制转换十进制 long result = 0; for(int i=(serial.length-1);i>=0;i-
  • 二进制是Binary,简写为B八进制是Octal,简写为O十进制为Decimal,简写为D十六进制为Hexadecimal,简写为H
  • 二进制如何转十进制十进制如何转二进制

    万次阅读 多人点赞 2018-04-06 17:57:29
    学计算机的朋友刚开始学习时都要接触进制之间的转换,二进制、十进制、八进制、十六进制等,这个是很枯燥的,转来转去就转蒙圈了,别蒙别蒙,今天咱们一个一个搞定,看看二进制和十进制之间如何相互转换的。...
  • 先来看八进制如何转换成十进制。其方法与二进制转换成十进制差不多:按权相加法,即将八进制每位上的数乘以位权(如8,64,512….),然后将得出来的数再加在一起。 如将72.45转换为十进制。如图1所示 来看看十进制转...
  • 十进制转p进制整数部分 除p求余例 十进制 21 0 转八进制 210/8=26余2 26/8=3余2 3/8=0余3 所得八进制为322小数部分 乘p取整例 十进制 0.56 转八进制 0.56*8=...
  • 我们在学习python时候肯定会碰到关于进制转换,其实这是非常简单的,这个就像小学学习数学乘法口诀意义,只要记住转换口诀即可轻松应用,一起来看下具体的操作内容吧~一、python进制转换dec(十进制)—>...
  • java实现十六进制转十进制

    万次阅读 2019-06-16 22:29:59
    写了两种十六进制转十进制的方式,仅供参考。 基本思路:用十六进制中每一位数乘以对应的权值,再求和就是对应的十进制 方法一: /** * @param: [content] * @return: int * @description: 十六进制转十进制 */ ...
  • 利用 toString() 方法 十进制转二进制 示例: var num = 10; console.log( num.toString(“2”) ) 转2进制输出: “1010” console.log( num.toString(“8”) ) 转8进制输出: “12” console.log( num.toString...
  • 以下程序的输出结果是 main(){ int a=20; printf("%d,%o,%x\n",a,a,a);...1.题目给出了 a=20这个十进制现在我们需要用十进制转八进制,这里我们采用的就是直接除8取余的方法 2.同理对于10进制转16进制我们也是...
  • 转自:... 十进制 十六进制 二进制 Symbol 十进制 十六进制 二进制 Symbol 0 00 0000 0000 NUL 64 40 0100 0000 @ 1 01 0000 0001 SOH 65 41 0100 0001 A 2 02 0000 0010 STX 66 42 0100...
  • // 十进制转三进制 public static String convertDecimalToTernary(int n){ StringBuilder sb = new StringBuilder(); sb.reverse(); while (n > 0) { sb.append(n % 3); n /= 3; } ...
  • 十进制转换为十六进制,也就是 采用 除k取余法 ,直接让10处以16,再对 数据如果小于10和大于10进行处理,代码如下: #include<iostream> #include<string> using namespace std; int main() { ...
  • 十进制转换R进制;R进制转十进制

    千次阅读 2018-07-31 15:51:49
    十进制转换R进制 (1)直接用C++里的函数,(不建议) itoa函数:它的功能是将一个10进制的数转化为n进制的值、其返回值为char型。 char str[105]; itoa(num, str, R);//num转R进制,存到str中 (2)自定义函数...
  • 十进制转k进制 k进制转十进制

    千次阅读 2019-02-21 14:59:30
    十进制转k进制 手算方法: 例如,205.345(10) =11001101.01011(2) ,转化时分为整数部分和小数部分 整数部分:除以k取余,写的时候从下往上将余数写出来即可 小数部分:乘以k取整,写的时候从上往下将竖式的整数...
  • python 十进制转二进制

    万次阅读 多人点赞 2019-06-24 16:55:42
    python 十进制转2进制有内置函数 bin 方法1: in:bin(1) output:'0b1' 方法2: n = int(input('请输入要转换进制的数值:')) # x = 2 # 转换为二进制,所以这里取x=2 b = [] # 存储余数 while True: # ...
  • 输入一个十进制数,转换为对应的八进制、十六进制、十进制数输出 Input 输入一个十进制数 Output 输出该十进制数对应的八进制、十六进制、十进制数 Sample Input 10 Sample Output oct:12 hex:...
  • 二进制,十进制,八进制,十六进制转换

    万次阅读 多人点赞 2019-01-07 23:33:55
    二进制与十进制的转换 (1)二进制转十进制 方法:“按权展开求和” 【例】:整数转换 【例】:小数转换 (0.101)2 = 1x2-1 +0x2-2 +1x2-3 = (0.625)10 规律:个位上的数字的次数是0,十位上的数字的次数是1,…,...
  • python十六进制和十进制互转

    万次阅读 2019-06-13 21:34:50
    写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 ) 输入描述: 输入一个十六进制的数值字符串。 输出描述: 输出该数值的十进制字符串。 示例1 输入 复制 0xA 输出 复制 10 ...
  • //十进制转二进制 func fuc(person:Int) { let a = String(person,radix:2) print(a) } fuc(person: 3) //二进制转十进制 func binary2dec(num:String) { var sum = 0 for c in num { sum = sum * 2 + Int(“©”)! ...
  • 2、两个十六进制的byte需要组合成一个十进制,比如高位:0x01,低位:0x78 组合成0x0178转十进制 解决办法 /** * byte转为十进制int * @param bytes * @return */ public static int byt...
  • 十进制转任意进制 分析:十进制数 X 转 M 进制,方法是:从 X 开始循环除以 M ,记下余数,整数商作为新的 X 继续除以 M ,直到 X=0 为止。然后倒序取余数即可。 (10 进制转 2 进制) (10 进制转 16 进制)...
  • 输入一个十进制数,转换为对应的八进制、十六进制、十进制数输出输入 输入一个十进制数输出 输出该十进制数对应的八进制、十六进制、十进制数样例输入 10 样例输出 oct:12 hex:a dec:10 提示使用输出格式...
  • Java有好多类库,可是自己不知道,有时候会走很多弯路...十进制转任意进制: String s = Integer.toString(N, B); 任意进制转十进制: int i = Integer.parseInt("32", N); Integer i = Integer.valueO
  • C++任意进制转换为十进制我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加。 废话不多说直接上代码。#include #include using namespace std;int main() { int r,i=0,ans=0; string n; cin>>r>>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,925
精华内容 33,170
关键字:

十进制