Due Thursday, October 4

15 points

For this assignment you will write a program that reads float numbers from
`stdin` and displays the sign, exponent, and mantissa parts of
their floating point representation.
The input should contain one floating point number per line.
For each input number the output should have the following information:

- the input number
- the bits of the floating point number represented in hexadecimal
- the sign bit of the number
- the exponent bits of the number represented in hexadecimal
- the mantissa bits of the number represented in hexadecimal

For example, for the input numbers -1.75 and 23.5 your output could look like

number: -1.75000 bits: BFE00000 sign: 1 exponent: 7F mantissa: 600000 number: 23.50000 bits: 41BC0000 sign: 0 exponent: 83 mantissa: 3C0000

The following subsections provide suggestions for handling various aspects of the coding.

The standard technique for processing input line-by-line is to set up a
loop that uses `gets()` or `fgets()` to read a line into an
array of characters.
You can then process the characters directly or use `sscanf()` to
do formatted text conversions on the input line.
When there is no more input, both `gets()` and `fgets()`
return `NULL`.

For line-by-line floating point input you can process the character string
read by `gets()` or `fgets()` using `sscanf()` with
a "%f" format.

You can obtain the bits of a float number using a C union.
First declare a variable `converter` as follows:

union { float fVal; unsigned long lVal; } converter;This creates a single memory location that can hold either a

You can output a long integer in hexadecimal using `printf()` or
`fprintf()` with a "%lx" or "%lX" format specifier.
For example, if `l` is declared as a `long` (either signed
or unsigned) then the following statement prints `l` right
justified in a field of width 8.
At least 6 hexadecimal digits are printed.

printf("8.6lX", l);

With a "%lx" format, the digits are printed using lower case letter ('a' through 'f'). With a "%lX" format, the digits are printed using lower case letter ('A' through 'F').

In your C code, you can specify hexadecimal literal constants with a "0x"
prefix.
For example, `0x43` can be used interchangably with `67`.
Note that 43_{16} = 67_{10}.

You can select fields of bits from an integer using a combination of
bitwise shifts and bitwise and operations.
If `l` is an integer then

`l>>23`is an integer with the bits of`l`shifted 23 places to the right.`l&0x7FF`is an integer containing just the rightmost 11 bits of`l`(the rightmost 11 bits of`0x7FF`are 1).

The `>>` operator has higher precedence than the
`&` operator.

You should turn in a listing of your program along with a recording of its execution with sample input that shows the representations of floating point numbers with a variety of magnitudes and signs. Your program listing should contain your name and the course number. Your code should be commented with at least a description of what it does and it should have comments for each of the functions.