为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得浮点数的符号,尾数和指数

如何获得浮点数的符号,尾数和指数

C
翻过高山走不出你 2019-09-24 09:50:44
我有一个在两个处理器上运行的程序,其中一个没有浮点支持。因此,我需要使用该处理器中的定点执行浮点计算。为此,我将使用浮点仿真库。我首先需要提取处理器上支持浮点数的浮点数的符号,尾数和指数。因此,我的问题是如何获取单个精度浮点数的符号,尾数和指数。在此处输入图片说明 到目前为止,这就是我所做的,但是除符号外,尾数和指数均不正确。我认为,我缺少了一些东西。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


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 1660 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信