标签:style c class blog code java
单片机中,浮点数常用3字节浮点数表示
将浮点数表示成如下形式进行存储:
M为尾数,0<=M<1;
E为阶码,是指数部分;
C为基数,二进制数的C取2。
上位机从单片机中读取到的字节数据不能直接使用,需要进行转换,以下是在C#中用到的一个转换函数
1 //将3字节浮点数据转换成float 2 static double ToSingle3(byte A, byte B, byte C) 3 { 4 double v = 0; 5 int sign0 = (A & 0x80) == 0 ? 1 : -1; // 尾数的符号 6 int sign1 = (A & 0x40) == 0 ? 1 : -1; // 指数的符号 7 int e =sign1*( (sign1 == 1) ? (A & 0x3F) :(((A - 1) & 0x3F) ^ 0x3F) ); //指数 8 double t = Math.Pow(2,e); 9 for (int i = 1; i < 9; i++) 10 { 11 t /= 2; 12 if ((((B >> (8-i)))&1) == 1) 13 { 14 v +=t; 15 } 16 } 17 for (int i = 1; i < 9; i++) 18 { 19 t /= 2; 20 if ((((C >> (8 - i))) & 1) == 1) 21 { 22 v += t; 23 } 24 } 25 return v; 26 }
标签:style c class blog code java
原文地址:http://www.cnblogs.com/Rhymer/p/3745045.html