日期:2014-05-17  浏览次数:20819 次

求 java 的 Float 下面的一个方法 C# 的算法
求这两个算法
Float.floatToRawIntBits(paramFloat)
Double.doubleToRawLongBits(paramDouble)

这个是反的,
private float intBitsToFloat(int bits)
        {
            int s = ((bits >> 31) == 0) ? 1 : -1;
            int e = ((bits >> 23) & 0xff);
            int m = (e == 0) ?
              (bits & 0x7fffff) << 1 :
              (bits & 0x7fffff) | 0x800000;

            return (float)(s * m * Math.Pow(2, e - 150));
        }

        private double longBitsToDouble(long bits)
        {
            int s = ((bits >> 63) == 0) ? 1 : -1;
            int e = (int)((bits >> 52) & 0x7ffL);
            long m = (e == 0) ?
                            (bits & 0xfffffffffffffL) << 1 :
                            (bits & 0xfffffffffffffL) | 0x10000000000000L;

            return (s * m * Math.Pow(2, e - 1075));
        }

------解决方案--------------------