二进制与十进制的转换(包含小数部分)

1.除二取余

        除二取余适用于十进制与二进制整数之间的转换,例如,十进制9要转换为二进制:

                首先我们确定9转换为二进制的有效二进制位,利用公式:log2n  上取整,不难算出,答案为4,所以对应二进制的有效位为4位,那么就可以进行运算了,9/2  =  4 余 1   ,算出的余数,对应二进制的最后一位,所以此时可以确定,对应的二进制为  xxx1   ,然后再对商的部分进行同样的运算,  4/2 = 2  余  0   ,此时的余数对应的是倒数第二位的二进制数为0    ,所以对应的二进制为xx01,剩余没有确定的两位做相同的运算,直到商为0结束即可,最后得到  9对应的二进制为1001,可能我说的有点儿啰嗦,但是大致意思还是很清楚的,具体过程如下图:

二进制与十进制的转换(包含小数部分)_第1张图片

2.乘二取整 

        乘二取整适用于十进制与二进制小数之间的转换,例如,十进制0.71875要转换为二进制:

 乘二取整的意思是,将十进制小数部分乘2,然后取对应的整数位作为对应的二进制数。

以十进制数字0.71875为例,0.71875*2=1.4375  取整数位1为对应二进制的第一个数,即:0.1xxx...    然后再取小数部分0.4375,0.4375*2=0.875  取整数位0为对应二进制的第二个数,即:0.10xxx...   然后取小数部分0.875, 0.875*2=1.75   取整数位1为对应二进制的第三个数,即:0.101xxx...    接下来做类似的操作,直到小数部分为0则表示结束,最后对应的二进制结果为0.10111,具体过程如下:

二进制与十进制的转换(包含小数部分)_第2张图片

你可能感兴趣的:(c语言)