Converting signed magnitude binary to signed 2's complement
some numbers like -0 in particular cannot be represented.  is there a difference between +0 and -0?  There is one or maybe two (or few)numbers that are a problem and they are around the end points.  10000 being minus zero if you see the sign bit set you negate the other bits, invert and add one so 1111 + 1  = 10000 or 0000, leaving you with the number 10000 in twos complement which is what -32 not -0.  what about sign magnitude 11111 minus 15.  10001, that works fine.  what about 00000 that works fine what about 01111, that works fine.  so you have the one exception, if the sign is 1 and the magnitude is zero then flip the sign, else negate the magnitude and keep the sign.