二,八,十六进制间的转换

总结:

        这种转换个人觉得 如果一开始接触是比难记忆的,使用简单的方式就是将十进制作为传递的载体,即 先计算 2 8 16 转十进制 , 再计算 十进制 转 二 八 十六进制 ,这种是相对来说比较方便记忆的.

例如:转十进制时

      二进制转为十进制的方式为:从右往左开始 依次进行(数值*2^i次方)计算,然后相加得到十进制

     八进制转为十进制的方式为:从右往左开始 依次进行(数值*8^i次方)计算,然后相加得到十进制

     十六进制转为十进制的方式为:从右往左开始 依次进行(数值*16^i次方)计算,然后相加得到十进制

       可得: 二 八 十六进制转为十进制时的公式为: 数值 *(几进制就是数字几)^ i次方

       如:123(八进制) 转  十进制

                1*8^2  +  2*8^1 + 3*8^0 = 83

例如十进制转 其他时

将某个十进制数除 (几进制就是除几) 得到的整数部分保留,作为第二次除时的被除数,得到的余数依次记下,重复上述步骤,

直到整数部分为0就结束,将所有得到的余数最终逆序输出,则为该十进制对应的二进制数。

可得: 796(十进制) ==> 1434(八进制)

        796/8=99...4

        99/8=12...3

        12/8=1..4

        1/8=0...1

二进制转八进制:

计算方式:

        把二进制数从右到左每三位为一组进行计算,如右边不足三位则用0代替(八进制的数各个位都小于8)

       如: (二进制) 1001  ==> 001  001

计算:

        每组有三个数 , 每组数从右至左依次为:数值 * 2的0次方 + 数值 * 2的1次方 + 数值*2的2次方

         二进制) 1001  ==>                  001                     +                       001    

        (二进制)1001 ==> 0*2^2 + 0*2^1 + 1*2^0  拼接后三位  0*2^2 + 0*2^1 + 1*2^0 = 11(八进制)

结果:

        二进制数1001 转为 八进制数为 :11

示例:

二进制:1101110001 
分组:
    001 101 110 001
计算:
    第一组:0*2^2 + 0*2^1 + 1*2^0 = 0+0+1 = 1
    第二组:1*2^2 + 1*2^1 + 0*2^0 = 4+2+0 = 6
    第三组:1*2^2 + 0*2^1 + 1*2^0 = 4+0+1 = 5
    第四组:0*2^2 + 0*2^1 + 1*2^0 = 0+0+1 = 1
结果:
    二进制:1101110001 转为八进制数为:1561

注: 
    结果是1561  而不是1651 注意顺序

简化:

        因二进制数 只有0和1,所以分组后计算的值为: 111==>4+2+1 , 101==>4+0+1

二进制转十进制:

计算方式:

        二进制和八进制和十六进制 转十进制不需要分组 ! ! !   直接进行计算

计算:

        二进制从右往左开始 依次进行(数值*2^i次方)计算,然后相加得到十进制

                i:表示当前位数的序号 , (i从右开始是0)

        如:101数值,从右开始:1对应 i 的序号为0 ,0对应i 的序号为1

        如:10011(二进制)  ==>  19(十进制)

       对应下方:     1         0            0             1           1    =     19(二进制)

                       1*2^4 + 0*2^3 + 0*2^2  + 1*2^1 + 1*2^0  = 16+0+0+2+1 = 19(十进制数)

结果:

        二进制数10011 转为 十进制数为 :19

二进制转十六进制:

计算方式:

        把二进制数从右到左每四位为一组进行计算,如右边不足四位则用0代替(十六进制小于10的就是1~9,然后10到15为a.b.c.d.e.f) 注:十六进制开头可用0x表示

计算:

        同理,每组4个数 , 每组的数从右至左依次为:数值 * 2的0次方 + 数值 * 2的1次方 + 数值*2的2次方

        如:111101101(二进制) 分组得:0001   1110   1101

0001  1110  1101

第一组:1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8 + 4 + 0 + 1 = d(就是13)
第二组:1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 8 + 4 + 2 + 0 = e(就是14)
第三组:0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 0 + 0 + 0 + 1 = 1(就是1)

最终111101101(二进制)转十六进制数为: 1ed 

结果:

        二进制数111101101 转为 十六进制数为 :1ed

八进制转二进制

计算方式:

        1.就是倒推得 如: 1234(八进制),从右边取出每一位数1,2,3,4

                4的二进制是1*2^2 + 0*2^1 + 0*2^0  ==> 4  == > 100

                3的二进制是0*2^2 + 1*2^1 + 1*2^0  ==> 1+2 =3  ==>  011

                2的二进制是0*2^2 + 1*2^1 + 0*2^0  ==> 2 ==> 010

                 1的二进制是0*2^2 + 0*2^1 + 1*2^0 ==> 1 ==>001

                结果1234(八进制)的二进制为 001 010 011 100

            简化:

                        每一位八进制数字对应的二进制数为 :

                                0 ==> 000

                                1 ==> 001

                                2 ==> 010

                                3 ==> 011

                                4 ==> 100

                                5 ==> 101

                                6 ==> 110

                                7 ==> 111

            

八进制转为十进制

计算方式:

        八进制转十进制与二进制转十进制的方式相同

        不同的点在于 由原来的1*2^i次方, 变为 1*8^i的次方

计算:

       把123(八进制)转为十进制

        1*8^2 + 2*8^1 + 3*8^0 = 64+16+3=83

结果:

        8进制数值123 转换为10进制的结果: 83

八进制转为十六进制:

转二进制再转十六 或者 转十进制再转十六进制. 嘻嘻嘻嘻嘻 !

十进制转二进制:

方式:

        除以2,反向取余数 , 直到商为0终止

例如: 9(十进制)-->1001(二进制)

将某个十进制数除2得到的整数部分保留,作为第二次除2时的被除数,得到的余数依次记下,重复上述步骤,

直到整数部分为0就结束,将所有得到的余数最终逆序输出,则为该十进制对应的二进制数。

9/2 商为8 余1 4/2 余0 2/2 余1 2/1 余1商0

计算:

        255(十进制) ==> 11111111 (二进制) 得到的余数是从下往上

        255 / 2 = 127...1

        127 / 2 = 63...1

        63 / 2 = 31...1

        31 / 2 = 15...1

        15 / 2 = 7...1

        7 / 2 = 3...1

        3 / 2 = 1...1

------------------------------------

        789(十进制)=1100010101(二进制)得到的余数是从下往上

        789 / 2 = 394......1 第10位

        394 / 2 = 197......0 第9位

        197 / 2 = 98......1 第8位

        98 / 2 = 49......0 第7位

        49 / 2 = 24......1 第6位

        24 / 2 = 12......0 第5位

        12 / 2 = 6......0 第4位

        6 / 2 = 3......0 第3位

        3 / 2 = 1......1 第2位

        1 / 2 = 0......1 第1位

结果:

        255(十进制) ==> 11111111 (二进制)

        789(十进制)=1100010101

十进制转八进制:

方式:

        除以8 , 反向取余数,直到商为0终止 与二进制一样

        796(十进制) ==> 1434(八进制)

计算:

        796/8=99...4

        99/8=12...3

        12/8=1..4

        1/8=0...1

结果:

         796(十进制) ==> 1434(八进制)

十进制转十六进制:

方式:

        除以16,反向取余数,直到商为0终止。

        十六进制是由0-9和A-F组成,A相当与十进制的10,B相当与11以此类推,F相当于15

计算:

        十进制数796转换为十六进制数

        796/16 =49..12(c)

        49/16 =3...1(1)

        3/16 ==> 0...3(3)  ==> 这里表示已经不能除了 直接余数为3商为0

结果:

        十进制数796转换为十六进制数为31c

十六进制转十进制:

方式:

        由从右往左开始依次与16^i次方相乘,然后相加得到十进制

        16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……

计算:

        2AF5换算成10进制:

                第0位: 5 * 16^0 = 5

                第1位: F * 16^1 = 240

                第2位: A * 16^2= 2560

                第3位: 2 * 16^3 = 8192

                最后相加:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

结果:

        十六进制数值2AF5 转换为 十进制数的结果为 10997

十六进制转为八进制:

先将十六进制转为二进制,再将二进制转为八进制

十六进制转二进制:

方式:

        由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,

        所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:

计算:

        例:2AF5换算成2进制: 二进制中每组从右往左 每个1对应的为8 4 2 1 如:1111 == 8 4 2 1

        例:   (0可以忽略) 如: 1101 ==> 8 4 0 1

        解: 2 A(10) F(15) 5

结果:

        十六进制数2AF5对应的二进制数为:10 1010 1111 0101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值