下面这题是看了教程后都不知道是怎么回事呀  SDK上intBitsToFloat这个函数里面给的是0x7f800000这个数
郁闷!!!class A
{
   public static void main(String [] args)
   { 
         System.out.println("Float.intBitsToFloat(0x7f800000)); //  0x7f800000这个数是随便给的吗?换成其它数可以吗?它的输出结果是infinity(正的无穷大吗?),那怎么样才能叫做正的无穷大呢?
         System.out.println("Float.intBitsToFloat(0x7f800001));//输出结果NaN ,为什么比上面的还要大呢?那怎么样才能知道比正的无穷大还大呢?
         System.out.println("Float.intBitsToFloat(0x7f7fffff));//0x7f7fffff代表什么意思啊
         System.out.println("Float.intBitsToFloat(0x00000001));//0x00000001代表什么意思啊
         System.out.println("Float.intBitsToFloat(0x50000000));//0x50000000代表什么意思啊
   }
}

解决方案 »

  1.   

    intBitsToFloat
    public static float intBitsToFloat(int bits)
    Returns the float value corresponding to a given bit represention. The argument is considered to be a representation of a floating-point value according to the IEEE 754 floating-point "single format" bit layout. 
    If the argument is 0x7f800000, the result is positive infinity. If the argument is 0xff800000, the result is negative infinity. If the argument is any value in the range 0x7f800001 through 0x7fffffff or in the range 0xff800001 through 0xffffffff, the result is a NaN. No IEEE 754 floating-point operation provided by Java can distinguish between two NaN values of the same type with different bit patterns. Distinct values of NaN are only distinguishable by use of the Float.floatToRawIntBits method. In all other cases, let s, e, and m be three values that can be computed from the argument:  int s = ((bits >> 31) == 0) ? 1 : -1;
     int e = ((bits >> 23) & 0xff);
     int m = (e == 0) ?
                     (bits & 0x7fffff) << 1 :
                     (bits & 0x7fffff) | 0x800000;
     
    Then the floating-point result equals the value of the mathematical expression s·m·2e-150. 
    Note that this method may not be able to return a float NaN with exactly same bit pattern as the int argument. IEEE 754 distinguishes between two kinds of NaNs, quiet NaNs and signaling NaNs. The differences between the two kinds of NaN are generally not visible in Java. Arithmetic operations on signaling NaNs turn them into quiet NaNs with a different, but often similar, bit pattern. However, on some processors merely copying a signaling NaN also performs that conversion. In particular, copying a signaling NaN to return it to the calling method may perform this conversion. So intBitsToFloat may not be able to return a float with a signaling NaN bit pattern. Consequently, for some int values, floatToRawIntBits(intBitsToFloat(start)) may not equal start. Moreover, which particular bit patterns represent signaling NaNs is platform dependent; although all NaN bit patterns, quiet or signaling, must be in the NaN range identified above. 
    Parameters:
    bits - an integer. 
    Returns:
    the float floating-point value with the same bit pattern.