图片来源于网络
都知道计算机数据是以二进制数0和1补码的形式存储在内存中。
那你知道它们转换关系吗?那么问题来了,为什么要转换?
前面已经说过计算机数据是以二进制0和1存储,所以它们要转换为二进制存储在计算机中,
计算机有众多进制数,为什么要采用二进制数实现数据的存储呢?
采用二进制主要是为了方便硬件的实现,电流的通、断,或高压的高、低正好能够表示二进制的0和1两个数码。
转换同样也是为了方便更大数值运算和数据的表达,
比如:二进制的101110011011.1001
八进制=5633.44
十进制=2971.5625
十六进制= B9B9 (这样是不是便捷很多
来看一下进制数及它们的转换
计算机常用进制数分为:二进制、八进制、十进制、十六进制....
二进制0—1(逢2进1)
八进制0—7(逢八进一)
十进制0—9(逢10进1)
十六进制的0—F(10、11、12、1、14、15分别用A、B、C、D、E、F来表示(逢16进1)
它们对应关系
进制数对应关系
二进制的计算机方式 在二进制世界里只有数字0----1(逢二进一)
1.二进制转八进制
取三合一,即从二进制小数点为分界点,向左(向右)没三位取成够三位(添加0)
二进制对应八进制位权
例如下图:010 100 . 011 101
二转八
(010=2) (100=4) .(011=3) (101=5) 所以它们结果=24.35
分好组以后,对照二进制与八进制数的对应表(如表格所示),将三位二进制按权相加(此加非此加),小数点位置不变,得到的数就是八进制数,
在向左(或向右)取三位时,取到最高位(最低位)如果无法凑足三位,就可以在小数点的最左边(或最右边)补0(如下图)
不够取0
2.二进制转十进制
右到左用二进制的每个数去乘以2的相应次方,“ 小数点”后则是从左往右
看一下十进制的权值
十进制的位权
例如:1011001011.01(下图解析)
二进制转十进制解析
跟十进制权值表结合看,1x2的0次方=1从右边向左边开始以此类推下去,小数点另算。
也可以数几个数然后从左边开始,比如这里有9个就从 *X2的9次方。
然后对照着十进制位权进行相加,得出十进制数715.25.
3.二进制转十六进制
二转十六进制跟二转八进制一样的,不同的是十六进制是4位,而八进制是3位。
来看一下它们的权值
十六进制位权
取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一位16位
组分好以后,对照二进制与十六进制数的对应表(如图2中所示),将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变,最后得到的就是十六进制数 (如下图)
不足四位,就向左向右补0,(跟二转八进制一样的)
不够取0
在八进制世界里只有数字0----7 (逢八进一)
1.八进制转二进制
看下图发现没这个跟二进制转八进制一样的
例如:543.01
2.八进制转十进制
例如:(1010)8
(1010)8 =1× 8^3+0 × 8^2+l× 8^1+0 × 8^0
=512 + 0 + 8 + 0
=512+8
=(520)10
这个是不是和二进制转十进制数差不多的,只是它们权值不同而已。
3.八进制数转十六进制
八进制转成十六进制的算法通常有两种方法:
1.先把八进制转成二进制,再将二进制转换成十六进制
2.先把八进制转换成十进制,再将十进制转换成十六进制
在十进制世界只有0----9(逢十进一)
转换方法 :十进制除于N进制余数 得结果
1.十进制转二进制
比如:(185)10=(10111001)2
十进制转二进制
2.十进制转八进制
例如:(185)10=(10111001)2。
十进制转八进制
3.十进制转十六进制
例如:(185)10=(271)8
十进制转十六进制
在十六进制世界里只有1----F(逢十六进一)
1.十六进制转二进制
由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制每一位上最大值,所以,我们可以得出,跟二转十六进制数一样的
简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换。0位是右
例如:(2AF5)16解析
第0位:(5)16 = (0101) 2
第1位:(F)16 = (1111) 2
第2位: (A) 16 = (1010) 2
第3位: (2) 16 = (0010) 2 -------下往上
得:(2AF5)16=(0010.1010.1111.0101)2
2.十六进制转八进制
跟八转十六一样,先转为十进制或者二进制再转为八进制
3.十六进制转十进制
权值为:
第0位的权值为16的0次方
第1位的权值为16的1次方
第2位的权值为16的2次方.......依此类推
在第N(N从0开始)位上,如果是数X(X大于等于0,并且小于等于15,即:F)表示的大小大小为X*16的N次方
例如:2AF5解析 (竖式计算)
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240 (15*16)
第2位: A * 16^2= 2560 (10*16*16)
第3位: 2 * 16^3 = 8192 (2*16*16*16 ) 结果是:10997
(2 * 16^3 )+ (A * 16^2 )+ (F * 16^1 )+( 5 * 16^0 )= 10997(括号是我加进去的好看一点)
联系客服