将unsigned int范围[uint(a1)uint(a2)]的bitstring重新解释为浮点范围[float(a1)float(a2)]这可能吗?

时间:2017-09-15 14:16:42

标签: floating-point range static-analysis ieee-754 unsigned-integer

嗨,当重新解释32位字符串时,可能最终得到一个有效的浮点数:

uint:1101004800,float:20.000000

现在说我正在使用静态分析工具,该工具定义值范围的操作而不是单个值。

我正在考虑的一个这样的操作是将无符号值的32位bitstring值重新解释为float。

当转换为float [float(a1)float(a2)]时,是否有两个无符号整数[uint(a1)uint(a2)]的范围,仍然是连续范围?

我知道浮点数具有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

我已经读过here“比特序列,即使将它们解释为整数,也允许对浮点数进行正确比较和排序。”

1 个答案:

答案 0 :(得分:1)

它可以达到fmax表示但不能进一步(浮点数具有符号幅度的表示形式,因此顺序将反转为负数)。

bundle.js

但是意图是什么?您将对那些无法在整数上执行的范围执行哪些操作?