关于将十六进制数据转换为8位精度的浮点数,请问具体的做法是怎么样的?是不是用到了位运算,怎么实现?
http://blog.csdn.net/lovelvyan/article/details/52300137
直接将16进制(如果你说的是字符串的话)转为二进制数据复制给float即可。
另外,我没有见过8位精度的浮点数。
补答。
关于你说的位运算我写了一遍如下:
#include
using namespace std;
struct Float
{
int f;//符号(正负性 0正 1负)
int z;//指数部分,这里给出阶码,实际指数要减去基数7FH(0x7f)
int w;//尾数部分
};
Float convert(float a)
{
int p = (int)&a;
Float flt;
flt.f = ((*p) & 0x80000000)>>31;
flt.z = (((*p) & 0x7f800000) >> 23);
flt.w = (((*p) & 0x0004fffff));
return flt;
}
int main()
{
float a = -12.0f;//二进制 -1100 规格化为-1.1x2^3
Float flt = convert(a);
cout << flt.f << endl;
cout << flt.z-0x7f << endl;
cout <<flt.w<< endl;
}