gpt4 book ai didi

c++ - IEEE - 754 - 查找符号位、指数、frac、归一化等

转载 作者:太空狗 更新时间:2023-10-29 23:26:04 24 4
gpt4 key购买 nike

我正在接受一个 8 位十六进制数作为 IEEE 754 位 float 我想打印有关该数字的信息(signbit、expbits、fractbits、标准化,非规范化、无穷大、零、NAN) float 应该是单个的。

我阅读了位移位,我想这就是我应该做的?但是,我不是 100% 确定。我知道符号位位于数字的最左侧。表示正或负。我要移动多少才能找到每个?我只是不停地移动它来找到每一个吗?谁能解释一下我是如何找到每一个的?

我会移动 1 来找到符号位吗?我会移动 8 以获得指数吗?我会移动 23 以获得压裂吗?

符号位应为零

expbits 应该是 128

fracbits 应该是 0x00000000我觉得……

如果是这样,我如何在轮类后对其进行测试?

这就是我目前所拥有的

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

short wordOrder = 0x0100;

int HexNumber;

printf("Hex IEEE - 754\n");



if(wordOrder == 0x0100)
{
printf("\nbyte order: big-endian\n");
}
else
{
printf("byte order: little-endian\n");
}

printf("\n>");
scanf("%x", &HexNumber);
printf("\n%#x",HexNumber);




return 0;
}

我的输入(scanf)关于我想要它的方式..

>40000000
0x40000000

这是它在做什么..

最佳答案

对于单精度数,高位是符号,接下来的 8 位是指数,剩下的 23 位是尾数。所以……

bool negative = !!(HexNumber & 0x80000000);
int exponent = (HexNumber & 0x7f800000) >> 23;
int mantissa = (HexNumber & 0x007FFFFF);

如果指数为 255,则数字为 +- 无穷大或 NaN,具体取决于尾数是否为零(0 表示无穷大)。如果指数为零,则以太数为 +- 零(如果尾数为零)或尾数是实际的非标准化小数值。

如果指数是其他任何东西,则分数顶部有一个隐藏的一位,使其成为 24 位。在这种情况下,可以通过从指数中减去 127 来计算实际指数,使其在 -127 到 +127 的范围内,即两个指数的幂。

关于c++ - IEEE - 754 - 查找符号位、指数、frac、归一化等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2045018/

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