小数点怎么进行进制转换?

上一篇博文什么是进制?各进制间如何转换?解答了进制概念以及整数位的各进制间的转换。而对于小数点的进制转换是如何的呢?这里来看如何进行小数点的进制转换。

带小数点的二进制转十进制

例如:00010100.1转换为十进制?
带小数的转换则是整数部分很小数部分分开计算。
对于00010100整数部分按照上一篇博文可以得到转换为十进制是20。接下来我们计算小数部分。
小数部分二进制为1。小数点的取值范围是在0<=x<1,即0-1之间。我们还是按照整数部分的逻辑来给小数部分做排列编码,排列如下:

0		0		0		0		...
1		1		1		1		...
2^-1	2^-2	2^-3	2^-4	...
1/2		1/4		1/8		1/16	...
0.5		0.25	0.125	0.0625	...

即对应计算方式:1*2^-1=0.5,得出:00010100.1B=20.5D。

带小数十进制转二进制

还是刚刚那个例子,20.5转为二进制是多少呢?
整数部分的转换依旧是20除于2每次求余倒数排列得出20的二进制是:00010100。现在来看小数部分的转换。
还是对应上面的表,0.5对应的是1,其实按计算方式就是小数部分一直乘于2,取每次乘积的整数部分排列,直到小数部分变成0为止,若一直乘未得到0,则看其保存精度。
则20.5的二进制为:00010100.1。

带小数点二进制转八进制

例如:00010100.1转换为八进制?
整数部分依旧是按上篇博文计算得到24,我们来看小数部分。
整数部分是从右往左三个三个分开,左边无限补0,小数部分则是从右往左,右边无限补零。则转换如下:
100 =4
所以,最后得到八进制结果为:24.4。

总结

关于小数点的进制转换结束了。我们可以在这里也明白了为何浮点数的精度丢失,以及js在0.1+0.2时得到的不是0.3结果的拓展。可思考当带小数点二进制如何转十六进制等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值