精华内容
下载资源
问答
  • 二进制八进制计算器二进制数:八进制数:进制:进制:转换说明:上面第一行可将二进制转换为八进制,第二行可以将任意进制转换为任意进制。64个基数为:"[emailprotected]"注意:本工具只是各种进制计数法的数之间...

    二进制转八进制计算器

    二进制数:

    八进制数:

    进制:

    进制:

    转换说明:上面第一行可将二进制转换为八进制,第二行可以将任意进制转换为任意进制。

    64个基数为:

    "[email protected]"

    注意:本工具只是各种进制计数法的数之间的转换,计算机表示数的方法是进行编码表示,整数有整数的表示方法,浮点数有浮点数的表示方法,所以本工具不能直接把计算机中的二进制编码表示的数转换为八进制数。

    二进制转为八进制算法

    八进制是“逢八进一位,借一位当八”,因为三位二进制正好能表示所有八进制的基数,所以二进制与八进制的转换就比十进制与二进制的转换要简单一些,二进制转换为八进制直接把二进制三位为一组,每组转换为八进制基数就可得到八进制数,相反即可直接把八进制转换为二进制。下面我们来看详细转换方法:

    1、首先我们要掌握最基本的就是3位二进制数正好能表示8进制的所有基数,记住它们之间的对应关系,如下图所示。

    1-16102514164SS.jpg

    2、二进制转换为八进制的方法就是取三位组合为一位法,二进制的整数部分从右往左三位为一组,小数部份从左住右三位为一组,最后不足三位整数部分在左边加0,小数部分在右边加0.

    1-161025141H3U7.jpg

    3、分好组后,对照二进制与八进制对应关系表(如图1所示),将三位二进制按权相加得到一位八制制基数,然后按顺序排列,小数点的位置不变哦,最后得到的就是八进制数,如图3所示:

    1-161025141JN02.jpg

    需要注意的是,在向左(或向右)取三位时,取到最高位(最低位)如果无法凑足三位,就可以在小数点的最左边(或最右边)补0。进行换算,如图4所示。

    1-161025141Q14V.jpg

    4、将八进制转换为二进制,直接将每位8进制基数按照二进制与八进制对应关系表转换为2进制数,依次排列就得到了二进制数,如图5所示。

    1-161025141T5352.jpg

    二进制与八进制之间的互相转换到这里就OK啦,不是很难吧?这里需要注意的是大家在做添0补位的时候,是在小数点最左边或最右边才能添0,如图6所示,不然会出错的哦。

    1-161025142140119.jpg

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

    万次阅读 多人点赞 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,我会就博文中有疑义的问题做出解答。同时希望博文中不正确的地方各位加以指正!

    展开全文
  • 十六进制、八进制二进制与十进制的关系 1、二进制与进制关系 二进制以0b开头,后跟0–1 先记住这个规则:0b0000中四个0从左往右分别对应的是8421 例子: 二进制数0b0010对应的十进制数是2,为什么呢? 因为在1的...

    十六进制、八进制、二进制与十进制的关系

    1、二进制与十进制关系

    二进制以0b开头,后跟0–1
    先记住这个规则:0b0000中四个0从左往右分别对应的是8421
    例子:
    二进制数0b0010对应的十进制数是2,为什么呢?
    因为在1的位置对应的是2,如下:

    0*8+0*4+1*2+0*1=2
    

    同理0b1111对应的是15:

    1*8+1*4+1*2+1*1=15
    

    那么0b00000000怎么对应呢?
    因为二进制数逢二进一,从右向左是2的零次方,2的一次方,2的二次方,以此类推……
    那么0b00000000对应的为128 64 32 16 8 4 2 1
    按照以上介绍,0b11111111对应的十进制数为255=128 + 64 + 32 + 16 + 8 + 2 + 1
    在这里插入图片描述
    注:bin()是python中将十进制数转为二进制数的内置函数

    2、八进制与十进制关系

    八进制以0o开头,后跟0–7
    同理二进制,八进制是8的0次方,8的一次方,8的二次方,以此类推……

    3、十六进制与十进制关系

    十六进制以0x开头,后跟0–9;A–F
    同理,为16的0次方,16的一次方,以此类推……
    在这里插入图片描述
    在这里插入图片描述
    十六进制与二进制关系我见我另一个博客:

    链接: https://blog.csdn.net/m0_46672151/article/details/106312488

    展开全文
  • 进制转换:二进制八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是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转换成八进制的过程:

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

    展开全文
  • 十六进制与八进制对应二进制的规律 问题:     在学编程语言时,基本每一种编程语言都会提供hex()转换为16进制的函数,和oct()转换为8进制的函数。学过C#,java,Python,几乎每一种语言都...
  • 十六进制转二进制与二进制八进制问题将十六进制的字符串转换为二进制字符串将二进制的字符串转换为八进制的字符串运行效果图完结 问题 问题描述  给定n个十六进制正整数,输出它们对应的八进制数。 输入格式  ...
  • 二进制八进制.txt

    2020-07-19 10:30:27
    本文件为C++二进制转化八进制源代码,仅供各位了解学习进制之间的转换关系,让各位有个思路,我们都知道二进制转换成八进制是3个数合为一个来计算的,那么如果用户输入的只有两位数呢?这种情况该怎么算?最后一步...
  • 对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来...将二进制八进制、十六进制转换为十进制二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。...
  • 目录十进制、二进制八进制、十六进制对应表二进制转十进制8421码和十进制之间的对应关系十进制转二进制二进制、十进制互相转换(小数) 十进制、二进制八进制、十六进制对应表 十进制 二进制 八进制 十六...
  • 二进制,十进制,八进制,十六进制转换

    万次阅读 多人点赞 2019-01-07 23:33:55
    二进制三位一组分开就是八进制, 四位一组就是十六进制 二进制与十进制的转换 (1)二进制转十进制 方法:“按权展开求和” 【例】:整数转换 【例】:小数转换 (0.101)2 = 1x2-1 +0x2-2 +1x2-3 = (0.625)10 规律:...
  • 进制转换二进制八进制Prerequisite: Number systems 先决条件: 数字系统 To convert binary numbers into octal numbers, we first have to understand the relationship between binary and octal numbers. ...
  • 或每一位八进制数展成三位二进制数.告诉你一个简单的道理 1.不论什么进制----十进制 都是基数乘位置的次方数 例如: 二进制1010---十进制就是: 1*2^3 0*2^2 1*2^1 0*2^0=10 八进制77----十进制就是:7*7^1.二进制...
  • 二进制八进制与十六进制的关系

    千次阅读 2013-10-24 14:57:16
    2进制 0000 0001 0010 0011 0100 0101 0110 0111 16进制 0 1 2 3 4 5 6 7 2进制 1000 1001 1010 1011 1100 1101
  • 1、二进制数、八进制数、十六进制数转十进制数 有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。个位,N=1;十位,N=2...举例: 110B=1*2的...
  • 不管是二进制 八进制 还是10进制 16进制 ,只是一种数字的不同表现方式 ,我们习惯性使用10进制 ,同样数字‘56’在不同进制下的换算理解举例: 在二进制 :举例,111000(2进制只有0和1 ,满2进1 ,02的5次方+12的4...
  • 文章目录一、二进制八进制、十六进制整数的书写1、二进制2、八进制3、十六进制4、需要注意的坑二、二进制八进制、十六进制整数的输出四、版权声明 整数是我们生活中常用的数据类型,也是编程中常用的一种数据,...
  • 文章目录一、总体框架二、二进制八进制、十六进制转换为十进制2.读入数据总结 一、总体框架 在这里我们要明确进制之间相互转化的关系: 1、二进制八进制、十六进制可以转换为十进制。 2、十进制可以转换为...
  • 二进制八进制之间的转换  二进制八进制之间的关系式每个八进制位对应三个二进制位,详情如下:  八进制: 0 1 2 3 4 5 6 7  二进制:000 001 010 011 100 101 110 111  实例:  27.651(8) 010111....
  • 一、 十进制与二进制之间的转换 1.1 十进制转换为二进制,分为整数部分和小数部分 【1】整数部分 方法:采用"除2取余,逆序排列"法 即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个...
  • 二进制 → 十进制八进制 → 十进制十六进制 → 十进制 (十进制) → (二、八、十六进制) 十进制 → 二进制十进制 → 八进制十进制 → 十六进制 (二进制) ↔ (八、十六进制) 二进制
  • 八进制:在八进制数中,每一位用0—7八个数码表示,所以它的计数基数为8。低位数和高一位数之间的关系是逢八进一。 十六进制:十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F...
  • 二进制八进制、十六进制转换为十进制 二进制八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。 假设当前数字是 N 进制,那么: 对于整数部分,从右往左看,第 i 位的...
  • 借助同样的思想,计算机中有二进制八进制、十六进制之说,接下来详细讲解进制加减法及不同进制之间转换。 一、二进制八进制、十六进制 1.二进制 只用0、1两个数字来表示数值,这就是二进制...
  • 十进制,二进制八进制,十六进制的解意和详细转换 十进制 二进制 八进制 十六进制 十进制转换成二进制 十进制转换成八进制进制 十进制转换成十六进制 二进制进制转换成十进制 二进制转换成八进制进制 二进制转换成...
  • 十六进制换算成二进制八进制、十进制一、介绍:二、十六进制转二进制计算十六进制数转二进制数的方法:计算十六进制数2BF7转成二进制数:三、十六进制转十进制计算十六进制数转十进制数的方法:计算十六进制数2BF7...
  • 最近面试各种进制之间的转换着实让人头疼,... 二进制八进制之间的转换  二进制八进制之间的关系式每个八进制位对应三个二进制位,详情如下:  八进制: 0 1 2 3 4 5 6 7  二进制:000 001 010 011 100 101 1
  • 十六进制相互转换二进制转八进制,十进制,十六进制二进制转八进制二进制转十进制二进制转十六进制八进制转二进制,十进制,十六进制八进制转二进制八进制转十进制 二进制转八进制,十进制,十六进制 二进制转八进制...
  • 二进制八进制、十进制、十六进制之间的关系如下图: 十进制转二进制;150转二进制是:10010110如下图; 二进制转十进制10010110=150如下图: 二进制八进制 八进制二进制二进制转十六进制...
  • ASCII码(包含二进制,八进制,十进制,十六进制,ascii码的对照表).

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,766
精华内容 33,906
关键字:

二进制与八进制的关系