我有一个在两个处理器上运行的程序,其中一个没有浮点支持。因此,我需要使用该处理器中的定点执行浮点计算。为此,我将使用浮点仿真库。我首先需要提取处理器上支持浮点数的浮点数的符号,尾数和指数。因此,我的问题是如何获取单个精度浮点数的符号,尾数和指数。在此处输入图片说明 到目前为止,这就是我所做的,但是除符号外,尾数和指数均不正确。我认为,我缺少了一些东西。void getSME( int& s, int& m, int& e, float number ){ unsigned int* ptr = (unsigned int*)&number; s = *ptr >> 31; e = *ptr & 0x7f800000; e >>= 23; m = *ptr & 0x007fffff;}
3 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
您&输入的是错误的位。我想你要:
s = *ptr >> 31;
e = *ptr & 0x7f800000;
e >>= 23;
m = *ptr & 0x007fffff;
请记住,当您使用时&,您会将未设置的位清零。因此,在这种情况下,您希望在获得指数时将符号位清零,而在获得尾数时希望将符号位和指数清零。
请注意,蒙版直接来自您的图片。因此,指数掩码将如下所示:
0 11111111 00000000000000000000000
尾数蒙版将如下所示:
0 00000000 11111111111111111111111
- 3 回答
- 0 关注
- 1768 浏览
添加回答
举报
0/150
提交
取消