发布网友
共2个回答
热心网友
小数部分的二进制是按照乘2取整的方法的
0.67 * 2 = 1.34 //整数部分为1,因此是1,去掉整数部分是0.34
0.34 * 2 = 0.68 //整数部分为0,因此是0
0.68 * 2 = 1.36 //整数部分为1,因此是1,去掉整数部分是0.36
0.36 * 2 = 0.72 //整数部分为0,因此是0
0.72 * 2 = 1.44 //整数部分为1,因此是1,去掉整数部分是0.44
0.44 * 2 = 0.88 //整数部分为0,因此是0
0.88 * 2 = 1.76 //整数部分为1,因此是1,去掉整数部分是0.76
因此0.67表示为2进制为:0.1010101(精确度为7位)
热心网友
浮点数在存储时都是以A*B^N A乘以B的N次方
这样要用4字节来存储A B N 的值
不同的单片机同样的小数 A B N的值是不同的追问假设尾数是23位 是不是小数也要保留23位就可以了? 也就是A保留23位
追答先把小数转为二进制如 1234.67 = 1001 1010 010. xxxxxxxx
然后移位 0.1001 1010 010xxxxxx * 2^11
这样N就是11 A 是0 B如果是精度就要把小数点后面的截断
如果移位成 1001 .1010 010xxxx * 2^7
这样N就是7 A 是1001 B如果是精度就要把小数点后面的截断