1.3 数制的转换
1.3.1 非十进制数转换成十进制数
非十进制数转换成十进制数可按照式(1.2.1)展开,即首先把非十进制数写成按权展开的多项式,然后按十进制数的计数规则对各项相加求和。
【例1.3.1】 将二进制数(11010.011)2转换成十进制数。
解:将要转换的二进制数按照式(1.2.1)按权展开相加。
【例1.3.2】 将十六进制数(1AF.6)16转换成十进制数。
解:将要转换的十六进制数按照式(1.2.1)按权展开相加。
1.3.2 十进制数转换成非十进制数
十进制数转换成非十进制数时,要对十进制数的整数和小数分别进行转换,然后将两个转换结果进行合并即可。
1.整数部分转换
十进制整数D转换成R进制数可采取基数连除法,具体步骤如下:
① 将整数D除以基数R,记下所除结果的商和余数。
② 将上一步所得的商再继续除以基数R,记下所除结果的商和余数。
③ 重复做步骤②,直至商为0结束,并且每进行一次除法都要保留相应的余数。
④ 把保留下来的余数转换成相应的R进制数码,并按照跟运算过程相反的顺序把各个余数排列起来,得到整数D所对应的R进制数。
【例1.3.3】 将(367)10转换成十六进制数。
解:按照十进制整数转换成十六进制数的方法,对基数16进行连除并取余数。
对于十六进制数,当所表示数值大于9时需要用字母A~F来表示,因此对连除后得到的余数按照从高到低的顺序进行排序,可得:(367)10= (16F)16。
2.小数部分转换
十进制小数M转换成R进制数可采用基数连乘法,具体步骤如下:
① 将十进制小数M乘以基数R,记下所乘结果的整数部分,保留小数部分。
② 将上一步乘积所得结果中的小数部分再乘以基数R,记下所乘结果的整数部分。
③ 重复步骤②,直至小数部分为0或者满足预定精度要求为止,并且每进行一次乘法都要保留相应的整数部分。
④ 将保留下来的整数部分转换成R进制的数码,并按照和运算过程相同的顺序排列起来,得到小数M所对应的R进制数。
【例1.3.4】 将十进制小数(0.5625)10转换成二进制数小数。
解:按照十进制小数转换成二进制小数的方法,对基数2进行连乘并取整数。
对连乘所得的整数按照从高到低的顺序排列,可得:(0.5625)10=( 0.1001)2。
【例1.3.5】 将十进制数(18.48)10转换成二进制数小数(要求精确到小数点后3位)。
解:该十进制数既有整数部分又有小数部分,因此对于整数部分采取连除取余数法进行转换,对小数部分采取连乘取整数法进行转换,然后合并起来就可得到所求的结果。
将转换后的整数部分和小数部分合并,可得:
(18.48)10=(10010.011)2
1.3.3 非十进制数之间的转换
不同进制数的转换不仅仅是进行十进制数与非十进制数的相互转换,在二进制数、八进制数和十六进制数这些非十进制数之间也经常要相互转换,不同进制数之间的关系如表1.3.1所示。
表1.3.1 不同进制数的关系
1.二进制数与八进制数相互转换
二进制数转换为八进制数时,整数部分从右往左,每3位分成一组,最后剩余不足3位时可在左边补齐0;小数部分从左往右,每3位一组,最后剩余不足3位时在右边补0,使其补齐3位;最后将整数部分和小数部分的每一组都用等价的八进制数替换就得到所对应的八进制数。
【例1.3.6】 将二进制数(10100101.1101)2转换为八进制数。
解:将二进制数整数部分从右往左,每3位分成一组,小数部分从左往右,每3位一组,最后剩余不足3位时补0凑成3位,然后用相应的八进制数替换。
由上可得,(10100101.1101)2=(245.64)8。
八进制数转换为二进制数时,把八进制数的每一位数都转化为3位二进制数即可,其中最高位和最低位的0都可以省略。
【例1.3.7】 将八进制数(63.27)8转换为二进制数。
解: 把八进制数的每一位数都转化为3位二进制数即可。
由上可得,(63.27)8= (110011.010111)2。
2.二进制数与十六进制数相互转换
二进制数转换为十六进制数与二进制数转换为八进制数类似,整数部分从右往左开始,每4位分成一组,最后剩余不足4位时可在左边补0;小数部分从左往右,每4位一组,最后剩余不足4位时在右边补0,使其补齐4位;最后将整数部分和小数部分的每一组都用等价的十六进制数替换就得到所对应的十六进制数。
【例1.3.8】 将二进制数(101011101.011)2转换为十六进制数。
解: 将二进制数整数部分从右往左开始,每4位分成一组。小数部分从左往右,每4位一组,最后剩余不足4位时补0凑成4位,然后用相应的十六进制数替换。
由上可得,(101011101.011)2= (15D.6)16。
十六进制数转换为二进制数时,把十六进制数的每一位数都转化为4位二进制数即可,其中最高位和最低位的0都可以省略。
【例1.3.9】 将十六进制数(1A4.2D)16转换为二进制数。
解:
由上可得,(1A4.2D)16= (110100100.00101101)2。