Your confusion may be due to the width of the numbers involved. To better understand this, you can try to create a signed integer from your unsigned integers.
If the MSB of your unsigned integer is 0, you can read it as a signed one and get the same result.
If the MSB is 1, you can add 0 to the left to get the signed number. You have to sign-expand (that is, add 0s if the MSB is 0, add 1s if the MSB is 1) all signed numbers to get a number of the same width so that you can do the "usual" arithmetic.
For example, using your numbers:
X = 01001001: Unsigned, MSB is 0, do nothing.
Y = 10101010: Signed, did nothing with X, does nothing.
But if we change the MSB X to 1:
X = 11001001: Unsigned, MSB - 1, add 0 → 011001001
Y = 10101010: Signed, extended X, so the extension sign Y → 110101010
Now you have two signed numbers that you can add or subtract as you already know.
source share