• 二进制、八进制、十进制、十六进制的转换


           二进制(binary)数据是用0和1来表示的数,它的基数为2,进位规则是“逢2进1”。

          八进制(Octal)数据是用 0~7这8数来表示一个数,它的基数为8,八进制就是“逢8进1”,八进制的数和二进制数可以按位对应(八进制一位对应二进制三位)。

         十进制(Decimal)数据是用0~9这10位来表示一个数,它的基数为10,十进制就是“10进1”。

         十六进制(Hexadecimal)数据是用0~9和A~F(10~15)这16位来表示一个数,它的基数为16,十六进制就是“逢16进1”。十六进制的数和二进制数可以按位对应(十六进制一位对应二进制四位)。

    一、(二、八、十六进制)转换为十进制

    1.二进制转换为十进制

         方法:二进制数从低位到高位(即从右往左)计算,第1位的权值是2的0次方,第2位的权值是2的1次方,第3位的权值是2的2次方,第n位的权值是2的(n-1)次方,把最后的结果相加的值就是十进制的值了。

    eg:(1010)2=0*2^0+1*2^1+0*2^2+1*2^3=(10)10

    2.八进制转换为十进制

         方法:八进制数从低位到高位(即从右往左)计算,第1位的权值是8的0次方,第2位的权值是8的1次方,第3位的权值是8的2次方,第n位的权值是8的(n-1)次方,把最后的结果相加的值就是十进制的值了。

    eg:(23)8=3*8^0+2*8^1=(19)10

    3.十六进制转换为十进制

         方法:十六进制数从低位到高位(即从右往左)计算,第1位的权值是16的0次方,第2位的权值是16的1次方,第3位的权值是16的2次方,第n位的权值是16的(n-1)次方,把最后的结果相加的值就是十进制的值了。

    eg:(3A)16=A*16^0+3*16^1=(58)10

    总结:任意进制转换为十进制算法,从低位到高位(即从右往左),依次将第n位的值*任意进制的(n-1)次方相加。

     二、十进制转换为(二、八、十六进制)

    1.十进制转换为二进制

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

    eg:将(36)10转换为二进制,步骤:

    a.36/2商18余数为0;

    b.18/2商9余数为0;

    c.9/2商4余数为1;

    d.4/2商2余数为0;

    e.2/2商1余数为0;

    f.1/2商0余数为1;

    所以(36)10=(100100)2(因为最后一位是经过多次除以2才得到的,因此它是最高位,读数时从最后的余数向前读)

    2.十进制转换为八进制

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

    eg:将64(10)转换为八进制,步骤:

     a.64/8商8余数为0;

    b.8/8商1余数为0;

    c.1/8商0余数为1;

    所以(64)10=(100)8(因为最后一位是经过多次除以8才得到的,因此它是最高位,读数时从最后的余数向前读)

    3.十进制转换为十六进制

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

    eg:将326(10)转换为八进制,步骤:

    a.326/16商20余数为6;

    b.20/16商1余数为4;

    c.1/16商0余数为1;

    所以(326)10=(146)16(因为最后一位是经过多次除以16才得到的,因此它是最高位,读数时从最后的余数向前读)

    总结:十进制转换为任意进制算法,除任意进制取余法,直到商为0为止,读数时将最后一位放在最高位,依次向前读。

    三、二进制和(八、十六进制)间的转换

    1.二进制转换为八进制

         方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

    eg:将(1010100.01010)2转换为八进制,步骤:

    a.小数点左边:100=4,010=2,001=1;

    b.小数点右边:010=2,100=4;

    所以(1010100.01010)2=(124.24)8

    2.八进制转换为二进制

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

    eg:将(231.54)8转换为二进制,步骤:

    a.小数点左边:2=010,3=011,1=001;

    b.小数点右边:5=101,4=100;

    所以(231.54)8=(10011001.1011)2

    3.二进制转换为十六进制

         方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

    eg:将(101010111)2转换为十六进制,步骤:

    a.0111=7;

    b.0101=5;

    c.0001=1;

    所以(101010111)2=(157)16

    4.十六进制转换为二进制

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

    eg:将(B6)16转换为二进制,步骤:

    a.B=1011;

    b.6=0110;

    所以(B6)16(B6)16=(10110110)2

    参考:http://www.cnblogs.com/gaizai/p/4233780.html

  • 相关阅读:
    linux下vim命令详解
    Linux 指令篇:档案目录管理chown
    分级渲染百度地图路段红黄绿功能
    矢量数据的属性值的添加、编辑、删除
    Extjs+C# 文件上传
    IBATIS 的动态SQL语句拼接
    一个DIV位于另一个div的右下角
    ArcGIS JavaScript API 添加点
    将Excel数据导入至SqlServer中
    Extjs 图表控件,可修改X轴与Y轴坐标
  • 原文地址:https://www.cnblogs.com/lengjf/p/7449524.html
Copyright © 2020-2023  润新知