Defines interface of flt32.c functions (do not modify)
More...
Go to the source code of this file.
This file defines the interface to a C file flt32.c that you will complete. You will learn how to do floating point arithmatic without using any float
variables. Rather you will perform the operations by using the sign, exponent, and digit fields as defined in the IEEE floating Point Standard.
Whenever flt32
" is used, the value is an integer in the IEEE floating point 32 bit standard. Everything in a computer is stored as a series of 0/1's. When you use an int
to type a value, you are telling the compiler (and ultimately the CPU) to treat the 0/1's as a two's completemt number. When you use float
, the 0/1's represent a floating point number. When an addition is performed, the computer knows whether to use the integer or floating point add instruction. The two instruction do different things to the 0/1's.
In this assignment, you are doing floating point addition without using floating point instructions. You are directly doing the bit manipulations necessary to to complete the add. Since flt32
is an int
, the compiler will generate integer instructions. The flt32
is to remind you (the programmer), that although the computer is going to treat all values as integers, you know it is really 3 values (sign, exponent, mantissa) packed into 32 bits. Your responsitility is to unpack the three pieces, do the operations necessary to complete the add, then put the three values back together.
Absolute value of the argument. This can be done with a simple bit manipulation operation. No conditionals are required.
- Parameters
-
x | the integer containing a IEEE floating point value |
- Returns
- the absolute value of the parameter
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
Add two floating point values
- Parameters
-
x | an integer containing a IEEE floating point value |
y | an integer containing a IEEE floating point value |
- Returns
- x + y. Your code needs to account for a value of 0.0, but no other special cases (e.g. infinities)
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
void flt32_get_all |
( |
flt32 |
x, |
|
|
int * |
sign, |
|
|
int * |
exp, |
|
|
int * |
val |
|
) |
| |
Get the sign, exponent, and value in a single call. You will use the
- Parameters
-
x | the integer containing a IEEE floating point value |
sign | pointer to location where sign will be stored |
exp | pointer to location where exponent will be stored |
val | pointer to location where value will be stored C pointers to return values. |
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
int flt32_get_exp |
( |
flt32 |
x | ) |
|
Extract the exponent of the argument
- Parameters
-
x | the integer containing a IEEE floating point value |
- Returns
- the biased exponent of the argument
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
int flt32_get_sign |
( |
flt32 |
x | ) |
|
Extract the sign of the argument
- Parameters
-
x | the integer containing a IEEE floating point value |
- Returns
- 0 if the value is 0 or positive, 1 if it is negative
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
int flt32_get_val |
( |
flt32 |
x | ) |
|
Extract the digits of the argument
- Parameters
-
x | the integer containing a IEEE floating point value |
- Returns
- the 24 bits representing the value (includes the implicit 1)
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
int flt32_left_most_1 |
( |
int |
bits | ) |
|
Extract the position of the left most 1 in the argument's bits
- Parameters
-
- Returns
- -1 if the value is 0, otherwise the position (0 to 31) of the left most 1 bit.
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
Negate the argument. This can be done with a simple bit manipulation function. No conditionals are required.
- Parameters
-
x | the integer containing a IEEE floating point value |
- Returns
- the negation of the value
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h
Subtract to floating point values
- Parameters
-
x | an integer containing a IEEE floating point value |
y | an integer containing a IEEE floating point value |
- Returns
- x - y. Your code needs to account for a value of 0.0, but no other special cases (e.g. infinities)
- Todo:
- Implement in flt32.c based on documentation contained in flt32.h