> I dont know how I would subtract the 3 from the input digits without changing the number first into 2's complement and then back to binary and feed it into the register. This isn't as complicated as you seem to fear. When you need to subtract 3, the number you're subtracting from is 8 or greater (i.e., always positive), and the result will obviously also be always positive. Therefore, you can simply use a 4-bit adder to add 1101<sub>2</sub> (the value -3<sub>10</sub> in 2's-complement) to the number and ignore the resulting carry bit. 1000 + 1101 = (1)0101 1001 + 1101 = (1)0110 1010 + 1101 = (1)0111 1011 + 1101 = (1)1000 1100 + 1101 = (1)1001 1101 + 1101 = (1)1010 1110 + 1101 = (1)1011 1111 + 1101 = (1)1100 Here's one idea for implementation. When the input number is >= 8 (i.e., the high bit is set), it adds -3; otherwise, it adds zero — passing the original value through. <!-- Begin schematic: In order to preserve an editable schematic, please don't edit this section directly. Click the "edit" link below the image in the preview instead. -->  <!-- End schematic -->