gpt4 book ai didi

c - 如何获取 float 的符号、尾数和指数

转载 作者:太空狗 更新时间:2023-10-29 16:20:14 27 4
gpt4 key购买 nike

我有一个程序,它在两个处理器上运行,其中一个不支持浮点。因此,我需要在该处理器中使用定点执行浮点计算。为此,我将使用浮点仿真库。

我需要先在支持浮点的处理器上提取 float 的符号、尾数和指数。所以,我的问题是如何获得单精度 float 的符号、尾数和指数。

按照这张图的格式,

enter image description here这就是我到目前为止所做的,但除了符号,尾数和指数都不正确。我想,我错过了什么。

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;
}

最佳答案

我觉得还是用union做cast比较好,比较清晰。

#include <stdio.h>

typedef union {
float f;
struct {
unsigned int mantisa : 23;
unsigned int exponent : 8;
unsigned int sign : 1;
} parts;
} float_cast;

int main(void) {
float_cast d1 = { .f = 0.15625 };
printf("sign = %x\n", d1.parts.sign);
printf("exponent = %x\n", d1.parts.exponent);
printf("mantisa = %x\n", d1.parts.mantisa);
}

示例基于 http://en.wikipedia.org/wiki/Single_precision

关于c - 如何获取 float 的符号、尾数和指数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com