16进制与8进制之间的快速转码

题目: (123A.B)H=(?)Q

解:    一般的思路是16进制-->10进制-->8进制(即以10进制为桥梁)

            或者         16进制-->2进制-->8进制   (即以2进制为桥梁)

            实际上,还有更好的方法。(放在最后讨论)

            法1

                  转10进制:

                          整数部分:1*163+2*162+3*161+10*160=4666 (十进制)

                          小数部分:11*16-1=0.6875                              (十进制)

                          合起来是:4666.6875

                 转8进制:

                         整数部分:采用不断除以8,取余倒排的方法,得:110728

                         小数部分:采用不断乘以8,取整正排的方法,得:0.548

                         合起来是:11072.548

            法2:

                  转2进制:

                          整数部分:0001 0010 0011 1010(一个16进制位需要4个二进制位表示)

                          小数部分:10112

                          合起来是:0001 0010 0011 1010.10112

                  转8进制:

                          整数部分:001 001 000 111 010 2  -->110728 (一个8进制位只需要3个二进制位表示)

                          小数部分:101 1002 -->548

                          合起来是:11072.548

             法3:

                 1*163         +  2*162      +  3*161      +  10*160          +   11*16-1

               =1*(8*2)+  2*(8*2)2  +  3*(8*2)+  10*(8*2) 0   +   11*(8*2)-1          

               =8*83           +   8*82       +  6*81        +   10*80         +   5.5*8-1

               =886a.(5.5)    (很明显,这个8进制数很不规则 0.0)

               类比10进制的进位规则,这里,应为:满8进一

               整数部分:110728

               小数部分:一位大小为5.5的数字应该怎么处理呢?因为不满8肯定不能进位啊。那就只有一个办法了:往小数点后扩充几位数字(即5*8-1+X*8-2+..),使 得它们的“总体和”为5.5。

                              5.5*8-1=5*8-1+X*8-2   ==> x=4

               合起来是:11072.548

               完了。只要多注意观察,多思考,好方法就出来啦。^_^

posted @   Tup  阅读(438)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示