Adding two values is straightforward. Simply align the values on the
least significant bit and add, propagating any carry to the bit one position left. If the carry extends past the end of the word it is said to have "wrapped around", a condition called an "
end-around carry". When this occurs, the bit must be added back in at the right-most bit. This phenomenon does not occur in two's complement arithmetic. 0001 0110 22 + 0000 0011 3
0001 1001 25 Subtraction is similar, except that borrows, rather than carries, are propagated to the left. If the borrow extends past the end of the word it is said to have "wrapped around", a condition called an "
end-around borrow". When this occurs, the bit must be subtracted from the right-most bit. This phenomenon does not occur in two's complement arithmetic. 0000 0110 6 − 0001 0011 19
1 1111 0011 −12 —An end-around borrow is produced, and the sign bit of the intermediate result is 1. − 0000 0001 1 —Subtract the end-around borrow from the result.
1111 0010 −13 —The correct result (6 − 19 = −13) It is easy to demonstrate that the bit complement of a positive value is the negative magnitude of the positive value. The computation of 19 + 3 produces the same result as 19 − (−3). Add 3 to 19. 0001 0011 19 + 0000 0011 3
0001 0110 22 Subtract −3 from 19. 0001 0011 19 − 1111 1100 −3
1 0001 0111 23 —An
end-around borrow is produced. − 0000 0001 1 —Subtract the end-around borrow from the result.
0001 0110 22 —The correct result (19 − (−3) = 22). ==Negative zero==