zoukankan      html  css  js  c++  java
  • 二进制、八进制、十进制、十六进制之间转换

    (一)、进制之间的转换

    • 八进制:0-7
    • 十六进制:0-F
    1、十进制 与 二进制之间的转换
    • (1)、十进制转换为二进制,分为整数部分小数部分

      • 整数部分
         方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数。
         这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例:

      • 示例

          例:将十进制的168转换为二进制 
          
          	得出结果 将十进制的168转换为二进制,(10101000)2 
          	168 / 2 = 84    -- 0
          	84 / 2 = 42     -- 0
          	42 / 2 = 21     -- 0
          	21 / 2 = 10     -- 1
          	10 / 2 = 5      -- 0
          	5 / 2 = 2       -- 1
          	2 / 2 = 1       -- 0
          	1 / 2 = 0       -- 1
          	二进制(从后往前读): ‭10101000‬
        
      • 小数部分
         方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止
         如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,

         例1:将0.125换算为二进制 
        
         得出结果:将0.125换算为二进制(0.001)2 
         分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25; 
         第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5; 
         第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0; 
         第四步,读数,从第一位读起,读到最后一位,即为0.001。
          
         取整数位
         0.125 * 2 = 0.25 -- 0
         0.25 * 2 = 0.5   -- 0
         0.5 * 2 = 1.0    -- 1
         二进制:0.001
        
         例2:将0.45转换为二进制(保留到小数点第四位) 
         
         0.45 保留小数点4第四位
         0.45 * 2 = 0.9  -- 0
         0.9 * 2 = 1.8   -- 1
         0.8 * 2 = 1.6   -- 1
         0.6 * 2 = 1.2   -- 1
         二进制(从前往后读):0.0111
        
    • (2)、二进制转换为十进制 (不分整数和小数部分)

      方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数。

        例:将二进制数101.101转换为十进制数。 
      
        得出结果:(101.101)2=(5.625)10 
        大家在做二进制转换成十进制需要注意的是 
        1)要知道二进制每位的权值
        2)要能求出每位的值
      
        101.101 转换为十进制
        整数部分:2^2 + 2^0 = 5
        小数部分:2^(-1) + 2^(-3) = 1/2 + 1/8 = 0.5 + 0.125 = 0.625
        十进制: 2^2 + 2^0 + 2^(-1) + 2^(-3)  = 5.625
      
    2、二进制与八进制之间的转换
    • 首先,我们需要了解一个数学关系,即23=8,24=16,而八进制和十六进制是用这关系衍生而来的,即用三位二进制表示一位八进制,用四位二进制表示一位十六进制数。

    • 接着,记住4个数字8、4、2、1(23=8、22=4、21=2、20=1)。现在我们来练习二进制与八进制之间的转换。

    • (1)、 二进制转换为八进制

      • 方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。

      • 如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

          ①将二进制数101110.101转换为八进制 
          			101 110.101
          				整数部分:
          				    2^2 + 2^0 = 5
          				    2^2 + 2^1 = 6
          				小数部分:
          				    2^2 + 2^0 = 5
          				八进制: 56.5
        
          ② 将二进制数1101.1转换为八进制 
          	1101.1 不够位数,整数补高位;小数补低位
          		=> 001 101.100
          			整数部分:
          			    2^0 = 1
          			    2^2 + 2^0 = 5
          			小数部分:
          			    2^2 = 4
          			八进制:15.4
        
    • (2)、八进制转换为二进制

      • 方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

          ① 将八进制数67.54转换为二进制 	
          67.54 采用一分三方法=> 6 7.5 4
          二进制:110 111.101 100
        
    3、二进制与十六进制的转换
    • (1)、二进制转换为十六进制

      • 方法:与二进制与八进制转换相似,只不过是一位(十六)与四位(二进制)的转换,下面具体讲解

          例1:
          11101001.1011 采用四合一  => 1110 1001.1011
          			8+4+2 => 14 => E
          			8+1 => 9 => 9
          			8+2+1 = B
          十六进制:E9.B
           
          例2:
          101011.101 最高(最低位补0方法)=> 0010 1011.1010
          			2^1 = 2
          			2^3 + 2^1 + 2^0 = 8+2+1 = B
          			2^3 + 2^1 = 8+2 = 10 = A
          十六进制:2B.A	
        
    • (2)、十六进制转换为二进制

      • 方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

          ①将十六进制6E.2转换为二进制数 
          	6E.2 采用一分四 => 0110 1110.0010 
          	二进制:1101110.001
        
    4、八进制与十六进制的转换
    • 方法:一般不能互相直接转换,一般是将八进制(或十六进制)转换为二进制,然后再将二进制转换为十六进制(或八进制),小数点位置不变。那么相应的转换请参照上面二进制与八进制的转换和二进制与十六进制的转
    5、八进制与十进制的转换
    • (1)、八进制转换为十进制

      • 方法:按权相加法,即将八进制每位上的数乘以位权,然后相加之和即是十进制数。

          ①将八进制数67.35转换为十进制 
          	67.35 
          	整数部分:55
          	    6x8^1 = 48
          	    7x8^0 = 7
          	小数部分:0.453125
          	3x8^(-1) = 0.375
          	5x8^(-2) = 0.078125 
          十进制:55.078125 
        
    • (2)、十进制与八进制转换

      • 十进制转换成八进制有两种方法:
        • 1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制
        • 2)直接法:前面我们讲过,八进制是由二进制衍生而来的,因此我们可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:
          • ①整数部分
            方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。

          • ②小数部分
            方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。

              例:将十进制数796.703125转换为八进制数 
              	解:先将这个数字分为整数部分796和小数部分0.703125整数部分
              	整数部分(从后往前读):
              	    796/8 = 99      -- 4
              	    99/8 = 12       -- 3
              	    12/8 = 1        -- 4
              	    1/8 = 0         -- 1
              	小数部分(从前往后读)
              	    0.703125 x 8= 5.625 -- 5
              	    0.625 x 8 = 5.0     -- 5
              	十进制:1434.55 
            
    6、十六进制与十进制的转换
    • 十六进制与八进制有很多相似之处,大家可以参照上面八进制与十进制的转换自己试试这两个进制之间的转换
    人生如棋,我愿为为卒;行走虽慢,可曾见我后退一步!
  • 相关阅读:
    sqlilab-Less-41-53-writeup
    【转载】CPU架构、指令集与指令集体系结构(ISA)
    《鸟哥的Linux私房菜》读书笔记--第0章 计算机概论 硬件部分
    UVA-1602 Lattice Animals 搜索问题(打表+set)
    Python爬虫简单入门及小技巧
    HDU-1043 Eight八数码 搜索问题(bfs+hash 打表 IDA* 等)
    nginx重启命令
    php使用正则过滤js脚本代码实例
    ini_set("display_errors","On");和error_reporting(E_ALL);
    js中NAN、NULL、undefined的区别
  • 原文地址:https://www.cnblogs.com/MPPC/p/5924756.html
Copyright © 2011-2022 走看看