Floating point 可以将无符号整数范围[uint(a1)uint(a2)]的位字符串重新解释为浮点范围[float(a1)float(a2)]吗?

Floating point 可以将无符号整数范围[uint(a1)uint(a2)]的位字符串重新解释为浮点范围[float(a1)float(a2)]吗?,floating-point,range,static-analysis,ieee-754,unsigned-integer,Floating Point,Range,Static Analysis,Ieee 754,Unsigned Integer,Hi当重新解释32位的位串时,可能会得到一个有效的浮点数: 单位:1101004800,浮动:20.000000 现在假设我使用的是一个静态分析工具,它定义了对值范围而不是单个值的操作 我正在考虑的一种操作是将无符号值的32位位位字符串值重新解释为浮点值 将两个无符号整数[uint(a1)uint(a2)]转换为浮点[float(a1)float(a2)]时,其范围是否仍然是一个连续的范围 我知道float对NaN有特殊的值,无穷大。但如果不是这样的话,这个范围转换是否成立 以下数字表明情况确实

Hi当重新解释32位的位串时,可能会得到一个有效的浮点数:

单位:1101004800,浮动:20.000000

现在假设我使用的是一个静态分析工具,它定义了对值范围而不是单个值的操作

我正在考虑的一种操作是将无符号值的32位位位字符串值重新解释为浮点值

将两个无符号整数[uint(a1)uint(a2)]转换为浮点[float(a1)float(a2)]时,其范围是否仍然是一个连续的范围

我知道float对NaN有特殊的值,无穷大。但如果不是这样的话,这个范围转换是否成立

以下数字表明情况确实如此:

int: 1101004800, float:  20.000000
int: 1101004801, float:  20.000002
int: 1101004802, float:  20.000004
int: 1101004803, float:  20.000006
int: 1101004804, float:  20.000008
int: 1101004805, float:  20.000010
int: 1101004806, float:  20.000011
int: 1101004807, float:  20.000013
int: 1101004808, float:  20.000015
int: 1101004809, float:  20.000017

我读过“位序列,允许浮点数被正确地比较和排序,即使在将它们解释为整数时也是如此。”

它可以使用fmax表示法,但不能更进一步(float有符号大小的表示法,所以负数的顺序会颠倒)

但目的是什么?对于无法对整数执行的范围,您将执行什么操作

0000 0000 -> 0.0
...
7F7F FFFF -> fmax
7F80 0000 -> +Inf
7F80 0001 - 7FFF FFFF -> NaN
8000 0000 -> -0.0
...
FF7F FFFF -> -fmax
FF80 0000 -> -Inf
FF80 0001 - FFFF FFFF -> NaN