十进制由0~9十位数字组成,逢九进一。计算机只能识别二进制数,即0和1。所以在运行时要转换为二进制。
一、进制间的转换(整数部分)
1、十进制与二进制
十进制转二进制,把十进制数的值除以2,得到商和余数两个部分,商一直除以2,直到商为0为止,把余数倒着看,就是最终转换成二进制的结果。
例如:十进制数123 转换为二进制数 1 0111
二进制转换为十进制,则是从右到左依次为2^0、2^1、2^2····2^n,将这个结果与对应二进制数的值(0或者1)相乘并以此相加,得到的就是对应十进制的数值。
例如:二进制数 10 1101 转换为十进制数 45
2、十进制与十六进制
十六进制由0~9十位数字和ABCDEF六位字母来表示,ABCDEF依次为10~15。
十进制转十六进制,把十进制数的值除以16,得到商和余数两个部分,商一直除以16,直到商为0为止,把余数倒着看,就是最终转换成十六进制的结果。
例如:十进制数 123 转换为十六进制数 7B
十六进制转换十进制的过程与二进制相同,从右到左依次为16^0、16^1····16^n,上下对齐做乘法运算,再讲乘积相加。
例如:十六进制数 1AB 转换为十进制数 427
3、十六进制与二进制
每个十六进制数 0~F 都可以用相对应的四位二进制数表示出来 0000~1111。
十六进制数转二进制数,每位十六进制数单独对应其四位二进制数,不够四位前面补零。
例如:十六进制数 12AB 转换为二进制数 0001 0010 1010 1011
二进制数转十六进制数,从右到左每四位划分为一个十六进制数,不够四位在前面补零。
例如:二进制数 0010 1011 0111 1000 1101转换为十六进制数 2B78D
二、进制间的转换(浮点数/小数)
1、十进制小数转换为二进制
十进制转二进制,小数部分乘以2,结果大于1则在小数位补1,小于1则在小数位补0,重复这个过程知道结果为零或者循环为止。若循环,小数位保留数值越多结果越精确。
二进制转十进制,小数部分从左到右依次取2^-1、2^-2·····2^-n上下对齐相乘,再将结果相加。
例如:将二进制小数 0.1010 1转换为十进制小数 0.6 5625
2、十进制与十六进制
计算方法与二进制相同,将2^-1 替换为 16^-1即可。
3、二进制与十六进制
二进制转十六进制,小数后从右到左每四位转换为一个十六进制数,如果不够四位要在后面补零。
例如:二进制数 1 0011.1001 1 转换为十六进制 13.98
十六进制转二进制,小数点后面每位数字依次对应四位二进制数。
通过上述我们知道了数值之间的转换,那为什么说小数大部分是不准确的呢?如下所示:
十进制数转二进制数
0.1转换为:0.000110011001100.......
0.2转换为:0.00110011001100......
0.3转换为:0.0100110011001......
......
0.5转换为:0.1
......
在上述十进制转换位二进制的结果中,只有0.5可以精确转换为0.1,其余大部分小数会进入到循环,没有精确的数值,所以说小小数大部分都是不精确的!