package java.lang; /** * Minimal Float implementation that supports * floatToIntBits and intBitsToFloat * * @author Lawrie Griffiths */ public final class Float { private Float() { } /** * Returns the bit represention of a single-float value. * The result is a representation of the floating-point argument * according to the IEEE 754 floating-point "single * precision" bit layout. *
0x80000000
) represents the sign of the floating-point
* number.
* 0x7f800000
) represent the exponent.
* 0x007fffff
) represent the significand (sometimes called
* the mantissa) of the floating-point number.
* 0x7f800000
.
* 0xff800000
.
* * If the argument is NaN, the result is the integer * representing the actual NaN value. The lejos implementation * behaves like floatToRawIntBits and does not collapse NaN values. *
floatToRawIntBits
.
*
* @param value a floating-point number.
* @return the bits that represent the floating-point number.
*/
public static native int floatToIntBits(float value);
/**
* Returns the single-float 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 precision" 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
* NaN. All IEEE 754 NaN values of type float
are, in effect,
* lumped together by the Java programming language into a single
* float
value called NaN. Distinct values of NaN are only
* accessible 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: *
* Then the floating-point result equals the value of the mathematical * expression s·m·2e-150. * * @param bits an integer. * @return the single-format floating-point value with the same bit * pattern. */ public static native float intBitsToFloat(int value); }* int s = ((bits >> 31) == 0) ? 1 : -1; * int e = ((bits >> 23) & 0xff); * int m = (e == 0) ? * (bits & 0x7fffff) << 1 : * (bits & 0x7fffff) | 0x800000; *