To start with, you need to know *what* floating point format the numbers are in - which sets of bits are exponent, mantissa, implied bit, the sign bits and any exponent bias (offset).
FP formats generally use a multiple of eight bits (eg. 16, 24, 32 or 64 in total), I've never seen one that uses eleven bits.
Once you know the format, you initially check if there is any overlap in the mantissas - if the exponents differ by more than the number of bits in the mantissa, the smaller of the two numbers is not big enough to change the value of the larger.
If they overlap, add them with appropriate alignment offsets.
If the result overflows, shift it and adjust the result exponent.
See the link below for more details of floating point representations.
Edit - second link added, to the source code download for a software floating-point math library package.
If you unzip it and look in the file softfloat.c, you can look at the addition routine starting at line 707
A bit more info about binary floating point formats, if you are not familiar with them.. It can take a while to get your head around the concepts if you have only worked with binary integers.
With binary fractions, the digits to the right of the 'decimal point' (or strictly, binary point) halve in value with each digit; 0.1 is a half, 0.001 one eighth etc.
Think of a binary FP number as a bit like a decimal in Scientific notation or Standard form.
Rather than a simple number with a decimal (binary) point, the number is shifted to 'normalise' it with the most significant digit in a fixed place. That's the mantissa, the amount of shift places used is the exponent.
The exponent is normally offset by half it's range to avoid 'no shift' being stored as zero, and an actual zero in the exponent part signifies the stored number is zero.
eg. with an eight bit exponent, a zero shift is stored as 128.
For any non-zero binary number, the most significant digit will be a 1...
As you know there is a 1 in a fixed place after normalisation, that can be omitted for storage to give a another significant digit, then put back when the number is unpacked to do any operations on it.