Using a sign-magnitude representation, like you've done here, will complicate matters greatly (and will saddle you with a bit pattern which represents "negative zero", separate from the all-zero "normal zero"). It's certainly a workable representation, but, as you're discovering, it's considerably more complicated to work with.
Using a two's complement representation, where the highest bit represents a negative value of twice the magnitude of the next highest bit (in this case, -2^1) will simplify matters immensely, as it will allow you to perform addition and subtraction exactly as if both numbers were unsigned. With such a representation, for instance:
0.25 = 00 010000
-1.00 = 11 000000
-----------
11 010000 = -0.75
and
-0.25 = 11 110000
-1.00 = 11 000000
-----------
10 110000 = -1.25
To convert from the sign-magnitude representation to two's complement:
- If the number is positive, leave it alone.
- If the number is negative, invert every bit other than the sign bit and add 1 (using unsigned addition).
For instance, to convert from your sign-magnitude representation of -0.75 to two's complement:
Sign/magnitude: 10 110000
Invert: 11 001111
+1: 11 010000 -> two's complement
To convert in the opposite direction, reverse the process (subtract 1, then invert).