Shift register

Shift register
Shift register is a device (usually a chain of flip-flops that performs arithmetic shift operation (kind of 1011100 > 011100x). Depending on the implementation, shift register may be able to shift bits in one or both directions, also it often has additional input to reset all contents to zero and may have inputs to set the content by specifying value for each bit. Small capacity registers usually have outputs for all bits of they content, but large capacity registers (especially if used as memory) may only provide access to the single bit.

During the shift, the content of each digit moves to the adjacent digit. The bit that is last in a sequence (highest or lowest bit, depending on the direction of the shift) is lost unless specifically preserved in some way. The bit that is first in a sequence has no predecessor to take a value from it. Instead, it normally takes the value from the separate additional input of the register (data input). If data input is connected to the last output, all current content, if once set, circulates through the register and is never lost (circular shift). Circular shift allows to read all content also when there is only one digit (flip-flop) with the available external output.

Shift register is an important element in ring counters, can be a basic element of binary multiplier, be part of CPU to perform shift operation (usually supported by CPU command set), convert between serial and parallel code, work as delay line and so on. Large capacity, specifically implemented shift registers were also used as memory devices in the past.


Shift register, implemented using D flip-flops. The lower button with fixation sets the value for the first flip-flop that has no predecessor to take the value from.