The shifting is just mimicking the "carry over" algorithm we do when the sum is over 10, such as:
However, in base 10 we have 10 symbols to use (0 to 9) and in base 2 we have only 2 symbols to use (0 and 1). In other words, every time the sum would equal to "2" in binary, you carry the digit over.
Code:
012
+19 -> 2+9=11, it carries 1 to the tens digit and 1 to the units digit
---
031