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

       二进制(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

 

posted @ 2017-08-29 17:51  lengjf  阅读(...)  评论(...编辑  收藏