A simple bidirectional shift register, i don't really know what to do with it, so i'll just put it here.
I added lights on the blueprint so that you can play with it (although you could also simply observe the states of the flip-flop/not gates, but lights are prettier).
demonstration gif
Basically, it performs a bit of arithmetic modulo 2^n on a counter (n-(2^n-1-n)-b when you push to the right, n-(n%2)-(n/2)+b2^(n-1) when you push to the left, where b is the bit you want to push, n%2 is the remainder of n/2, and n/2 is rounded down).
The design can easily be extended to any number of bits with 4n+14 logic blocks (buttons included), just add a flip-flop/2xand gate/not gate on the left and copy the connections of the previous one.
If you only want a "unidirectional" shift register, you can remove the corresponding buttons and the pairs not/and-gate to make it smaller (2n+8, 2 buttons included)
I added lights on the blueprint so that you can play with it (although you could also simply observe the states of the flip-flop/not gates, but lights are prettier).
demonstration gif
Basically, it performs a bit of arithmetic modulo 2^n on a counter (n-(2^n-1-n)-b when you push to the right, n-(n%2)-(n/2)+b2^(n-1) when you push to the left, where b is the bit you want to push, n%2 is the remainder of n/2, and n/2 is rounded down).
The design can easily be extended to any number of bits with 4n+14 logic blocks (buttons included), just add a flip-flop/2xand gate/not gate on the left and copy the connections of the previous one.
If you only want a "unidirectional" shift register, you can remove the corresponding buttons and the pairs not/and-gate to make it smaller (2n+8, 2 buttons included)