Why three? BCD digits in the range zero to four (0,1,2,4) will double naturally to 0,2,4,8 after the shift. This correction looks for digits that will 'BCD overflow' decimal 9 -> 10 on the next shift and patches the result by adding three. After each shift a correction is applied to each 4-bit BCD column (or those having more than 3 bits shifted in by that point). Each repetition halves the remaining binary number and doubles the BCD number, after the complete binary value is shifted the result is obtained. The Double-dabble technique converts binary to BCD by repeated shifting.