This is my homework question, I would appreciate any hints to help me get started.
A shifter is used to shift a string of 0's and 1's to the left or right by a fixed number of positions. The vacated positions(s) is/are filled by 0. For example, if 0011 is shifted left by one position the result is 0110; if 0011 is shifted right by one position the result is 0001.
Two control signals, S1 and S0, are used to specify the various actions, as given below.
S1 = 0 and S0 = 0: No change, that is, pass input string to output
S1 = 0 and S0 = 0: Shift right one bit position
S1 = 1 and S0 = 0: Shift right two bit positions
S1 = 1 and S0 = 1: Shift left one bit position
Using a number of appropriate multiplexers without any additional logic gate, implement a shifter that accepts a 4-bit string ABCD, and generates the required 4-bit string WXYZ depending on the control signals S1 and S0. Complemented literals are not available. You must label your multiplexers, inputs and outputs clearly.
I researched online about the shifting operation and found out that it actually coincide with arithmetic operations, i.e., so "shift right one bit position" is actually division by 2, and "shift left one bit position" is multiplication by 2. However, I have no idea what "shift right two bit" means, is it division by 5? I tested with 1111 binary code (15) and the result is 0011 (3).
So basically since the shifting operations is just arithmetic operations, should I use the multiplexers to implement the latter? Yet I don't know how to go about it with only two control signals S1 and S0. Do I need 4 multiplexers since the output is 4 bits?