明白晓畅地理解:如何处理带有小数的进制转换
大家好,又见面了,我是你们的朋友全栈君。
整数的进制转换方法相信大家应该都很清楚,但是大家有没有想过带小数的数据又该怎样进行进制的转换呢?
下面就以二进制为例进行说明。
1.带小数的二进制转换为十进制:
例如二进制数 1011.0111,在转换过程中将其分为整数部分和小数部分分别转换,整数部分转换方式没有变化,即每位乘以2的对应该位数上的幂,此整数的幂为0~3,而对 于小数部分来说,对应的2的幂则应该是-1~-4。
1011.0111 = (1*2^3+0*2^2+1*2^1+1*2^0) + (0*2^-1+1*2^-2+1*2^-3+1*2^-4
=8+0+2+1+0+1/2^2+1/2^3+1/2^4
=11.4375
2.带小数的十进制转换为二进制:
我们知道十进制整数转换为二进制的方法是除2取余,直至商为0,最后将所得余数以逆序排列即可得到二进制数。而对于十进制小数则刚好相反,转换的方法是乘2取整,将小 数乘以2然后截取整数部分,再把截取后的小数乘以2再截取整数,以此类推,直至小数部分为0,最后将截取所得到整数以顺序排列即可得出对应的二进制数。
例如 0.4375
0.4375*2 = 0.875……取0,
0.875*2 = 1.75……取1,
(1.75-1)*2 = 1.5……取1,
(1.5-1)*2 = 1……取1,
1-1 = 0(到此结束)
所以所得二进制数为0.0111。
需要注意的是并不是所有十进制小数都可以完全转换为二进制数,因为如果要实现完全转换必须乘2到最后不剩小数部分。这时通常是根据精度要求转换到小数后某一位为止。
上一篇: 如何轻松将十进制小数转为二进制小数 - 普通人也能理解的步骤
下一篇: 生成n个独特随机字符串的算法