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