The Java Program: TestFloat.java
1
2
3 class TestFloat {
4
5 final static int bias = (1<<(8-1)) -1;
6
7
8 public static char [] toChars (int l) {
9 final char [] s = new char [32];
10 for (int i=0; i<32; i++) {
11 s[32-i-1] = (l&0x1)==1?'1' : '0';
12 l >>>= 1;
13 }
14 return (s);
15 }
16
17
18 public static void printBits (float d) {
19 final int b = Float.floatToIntBits (d);
20 final char [] bits = toChars (Float.floatToIntBits (d));
21 System.out.format ("f = %f %s %08x %s%n", d, Float.toString(d), b, Float.toHexString(d));
22 System.out.println ("sign bit = " + new String(bits,0, 1));
23 System.out.println ("exponent (8 bits) = " + new String(bits,1, 8));
24 System.out.println ("mantissa (23 bits) = " + new String(bits,9,23));
25 System.out.println ();
26 }
27
28 public static void main (String args[]) {
29 printBits (Float.NaN);
30 printBits (Float.POSITIVE_INFINITY);
31 printBits (Float.NEGATIVE_INFINITY);
32 printBits (0.0F);
33 printBits (-0.0F);
34 printBits (1.0F);
35 printBits (-1.0F);
36 printBits (0x0.01p0F);
37 printBits (0.1F);
38 printBits (Float.MAX_VALUE);
39 printBits (-Float.MAX_VALUE);
40 printBits (Float.MIN_VALUE);
41 printBits (-Float.MIN_VALUE);
42 }
43 }