Java:将int读取为浮点,反之亦然,无需隐式转换
我偶然发现了这个关于快速平方根求逆的计算,有几行代码让我对示例代码感兴趣Java:将int读取为浮点,反之亦然,无需隐式转换,java,pointers,Java,Pointers,我偶然发现了这个关于快速平方根求逆的计算,有几行代码让我对示例代码感兴趣 y = number; i = * ( long * ) &y; i = 0x5f3759df - ( i >> 1 ); y = * ( float * ) &i; 这是用C编写的,在这种情况下是有意义的,但是有没有一种方法可以在没有真正指针的情况下在Java中实现同样的效果呢?例如,您可以使用ByteBuffer(如果必须的话,也可以使用不安全的方法) 你可以做的不是使用ByteB
y = number;
i = * ( long * ) &y;
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i;
这是用C编写的,在这种情况下是有意义的,但是有没有一种方法可以在没有真正指针的情况下在Java中实现同样的效果呢?例如,您可以使用ByteBuffer(如果必须的话,也可以使用不安全的方法) 你可以做的不是使用ByteBuffer或内存技巧
// y = number;
float y = number;
// i = * ( long * ) &y;
int i = Float.floatToRawIntBits(f);
// i = 0x5f3759df - ( i >> 1 );
i = 0x5f3759df - ( i >> 1 );
// y = * ( float * ) &i;
y = Float.intBitsToFloat(i);
// y = number;
float y = number;
// i = * ( long * ) &y;
int i = Float.floatToRawIntBits(f);
// i = 0x5f3759df - ( i >> 1 );
i = 0x5f3759df - ( i >> 1 );
// y = * ( float * ) &i;
y = Float.intBitsToFloat(i);