As promised, but in a long delay, the algorithm for Subtraction. Just notice how similar it is to the Addtraction algorithm. Also, try to think why we use the bitwise not operator to make it a borrow rather than carry.
unsigned int sub(unsigned int a, unsigned int b)
{
a ^= b;
b &= ~(a ^ b);
while (b) {
b <<= 1;
a ^= b;
b &= a;
}
return a;
}