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