Do it the way processors do (sort of) - use a one-bit adder.
Extract each bit from a and b in turn, and add them together with a carry bit to produce a single bit solution with an updated carry:
Inputs: Result:
A B C C X
0 0 0 0 0
0 1 0 0 1
1 0 0 0 1
1 1 0 1 0
0 0 1 0 1
0 1 1 1 0
1 0 1 1 0
1 1 1 1 1
Use that it a loop to process all the bits, and you are done.