从双精度中提取指数作为无符号值



嗨,我对代码战争站点的练习有问题。我的工作是从双精度值中提取指数作为无符号数字。但是我不允许使用任何算术和二进制运算并包含任何额外的文件。所以我不能使用字符:+-*/%&|^~<>#?。我认为解决这个问题的唯一方法是使用函数。你能给我一些建议如何完成这个任务吗

int exponent(double d)
{
  int result;
  frexp(d,&result);
  return result;
}

注意:我没有测试以下内容,因此可能需要一些"调整">

#include <math.h>
#include <stdint.h>
typedef union 
{
    double f;
    struct 
    {
        uint64_t mantisa : 52;
        uint64_t exponent : 11;
        uint64_t sign : 1;
    } parts;
} double_cast;
uint64_t normalizedExponent(double d)
{
    double_cast mydouble.f = d; 
    return ( mydouble.parts.sign )? mydouble.parts.exponent << 1:  mydouble.parts.exponent;
}

最新更新