Arc*_*ius 4 java floating-point binary
任何人都可以解释我或链接一些有用的资源,以了解Java方法背后的算法Float.intBitsToFloat(int)?
Java使用IEEE 754浮点. Float.intBitsToFloat(int)通过解释其参数的32位来工作,就好像它们以这里描述的格式指定了32位浮点数.
Double.longBitsToDouble(long)对于64位浮点数的工作方式类似,如此处所述.
在C中你可能会达到同样的效果:
#include <stdint.h>
union int_float_bits {
int32_t int_bits;
float float_bits;
};
float intBitsToFloat(int32_t x)
{
union int_float_bits bits;
bits.int_bits = x;
return bits.float_bits;
}
Run Code Online (Sandbox Code Playgroud)
(虽然从技术上讲,这将是未定义的行为,实际上它实际上总是按预期工作.)
该JDK6文档都相当不错,而源本身是非常有启发性(它只是使用一个C联合):
JNIEXPORT jfloat JNICALL
Java_java_lang_Float_intBitsToFloat(JNIEnv *env, jclass unused, jint v)
{
union {
int i;
float f;
} u;
u.i = (long)v;
return (jfloat)u.f;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7090 次 |
| 最近记录: |