首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

IEEE754标准计算公式有关问题

2013-08-13 
IEEE754标准计算公式问题我现在在开发一个项目,其中有一个要获取艾默生UPS电压电流等数据。根据厂家提供的

IEEE754标准计算公式问题
    我现在在开发一个项目,其中有一个要获取艾默生UPS电压电流等数据。
    根据厂家提供的协议返回的数据,怎么计算都不对,可能是我算的有误。例如‘交流输出电流A’,我在现场看机器数据为219.9V,返回的16进制内容其中的一段对应的‘交流输出电流A’是36 36 45 36 35 42 34 33(数据较长,但是根据文档中说明该UPS浮点数据都根据IEEE754标准,此段数据应该是正确的,也就是说此段16进制数对应的浮点数据为219.9)。但是我自己计算时数据却差太多了,不知道是我计算错误还是返回数据有问题(应该是我的问题),有懂的大神们给解答下,谢谢。
附:IEEE754标准公式IEEE754标准计算公式有关问题
    16进制转换10进制浮点工具计算结果:IEEE754标准计算公式有关问题
    我的计算过程:
36   36   45   36   35   42   34   33
6    6    E    6    5    B    4    3
110  110  1110 110  101  1011 100  11
0110 0110 1110 0110 0101 1011 0100 0011
符号位(S)=0
阶码(E)  =110 0110 1
尾数(M)  =110 0110 0101 1011 0100 0011
符号位(S)=0
阶码(E)  =205
尾数(M)  =6708035
套用浮点数值公式:±(1+M*2的负23次方)*2的(E-127)次方
                 ±(1+6708035*0.00000011920928955078125)*2的78次方
                 ±(1+0.79966008663177490234375)*302231454903657293676544
                 ±(1.79966008663177490234375)*302231454903657293676544
                =±543913886314763254759424
                =±5.4
备注:2的-1次方 = 1除以2的1次方

我的结果等于+5.4,工具计算结果=+2.7,机器上显示+219.9= =我表示很无奈。。求大神们解答。多谢
我使用C#程序开发的,C++不会= = IEEE754 算法 16进制转浮点型 UPS 电压电流
[解决办法]
你对标准理解有误,测试下:

static char Buf[16]; 


void __fastcall TForm1::Button1Click(TObject *Sender)
{
    union
    {
        float X;
        unsigned char XX[4];
    };

    X = 219.9;

    BinToHex(XX, Buf, 4);

    Caption = Buf;
}


热点排行