在计算机中,不同的进制之间的转换是常见的问题,也是令很多朋友比较头疼的问题,这种题虽然在Python二级中分不多,有时甚至还不会出,但是必须要掌握它们,以备不时之需。
这里详细介绍如何在二进制、八进制、十六进制与十进制之间进行相互转换。
R进制数转换为十进制数的方法是“按权展开”法,即从右至左,每一位上的数值乘以R的指数权重,不同进制的权重是不同的(二进制是2的幂,八进制是8的幂,十六进制是16的幂)。如:
方法:从右向左,将每个位的数值乘以2的指数(从0开始递增),然后将这些乘积相加。
因此,二进制?1011?对应的十进制数是11。
方法:从右向左,将每个位的数值乘以8的指数(从0开始递增),然后将这些乘积相加。
??????因此,八进制?347 对应的十进制数是?231。
方法:从右向左,将每个位的数值乘以16的指数(从00开始递增),然后将这些乘积相加。十六进制数中的字母表示数值(如:A=10, B=11, C=12, D=13, E=14, F=15)。
因此,十六进制?1A3 对应的十进制数是419。
十进制转化为R进制的方法是“除R取余”法。即将十进制数不断除以R,记录一下每次除数的余数,然后将这些余数倒序排列。
方法:将十进制数不断除以2,记录下每次除法的余数,然后将这些余数倒序排列。
因此,十进制 1313 对应的二进制数是 11011101。
方法:将十进制数不断除以8,记录下每次除法的余数,然后将这些余数倒序排列。
因此,十进制?95 对应的八进制数是137。
方法:将十进制数不断除以16,记录下每次除法的余数,然后将这些余数倒序排列。对于大于
9的余数,使用对应的十六进制字母(如:10=A, 11=B, 12=C, 13=D, 14=E, 15=F)。
因此,十进制2748 对应的十六进制数是?ABC。
方法:为减少转化方法的记忆负担,可先把非十进制数转化为十进制,再转为其它进制。
如二进制转十六进制,可以先把二进制转化为十进制,再把十进制数转化为十六进制数。
以上这些转化方法都是基于权重的概念,即每个位上的数代表的是其值乘以其位置的权重。在不同的进制中,权重是不同的(二进制是2的幂,八进制是8的幂,十六进制是16的幂)。通过这些方法,可以将任何一个进制的数转换为另一个进制的数。