Float.IntBitsToFloat(Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回对应于 float
给定位表示形式的值。
[Android.Runtime.Register("intBitsToFloat", "(I)F", "")]
public static float IntBitsToFloat (int bits);
[<Android.Runtime.Register("intBitsToFloat", "(I)F", "")>]
static member IntBitsToFloat : int -> single
参数
- bits
- Int32
整数。
返回
float
具有相同位模式的浮点值。
- 属性
注解
返回对应于 float
给定位表示形式的值。 根据 IEEE 754 浮点“单格式”位布局,参数被视为浮点值的表示形式。
如果参数为 0x7f800000
,则结果为正无穷大。
如果 参数为 0xff800000
,则结果为负无穷大。
如果参数是范围 0x7f800001
中的任意值, 0x7fffffff
或范围到 0xff800001
0xffffffff
的任何值,则结果为 NaN。 Java 提供的 IEEE 754 浮点运算无法区分具有不同位模式的同一类型的两个 NaN 值。 NaN 的非重复值只能通过使用 Float.floatToRawIntBits
方法进行区分。
在所有其他情况下,let s、 e 和 m 是三个可通过 参数计算的值:
<blockquote>
{@code
int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
(bits & 0x7fffff) << 1 :
(bits & 0x7fffff) | 0x800000;
}
</blockquote>
然后浮点结果等于数学表达式的值,&中点;m·2<sup> e-150</sup>。
请注意,此方法可能无法返回 float
与 参数完全相同的位模式的 int
NaN。 IEEE 754 区分两种 NaN:安静 NaN 和 信号 NaN。 这两种 NaN 之间的差异在 Java 中通常不可见。 对向 NaN 发出信号的算术运算会将它们转换为具有不同但通常相似的位模式的安静 NaN。 但是,在某些处理器上,仅复制信号 NaN 也会执行该转换。 具体而言,复制一个信号 NaN 以将其返回到调用方法可能会执行此转换。 因此 intBitsToFloat
,可能无法返回 float
具有信号 NaN 位模式的 。 因此,对于某些 int
值, floatToRawIntBits(intBitsToFloat(start))
可能 不 等于 start
。 此外,哪些特定位模式表示信号 NaN 依赖于平台;尽管所有 NaN 位模式(静默或信号)都必须在上面标识的 NaN 范围内。
的 java.lang.Float.intBitsToFloat(int)
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。