Shift Registers

A shift register is a register with controls for shifting its contents. Shift registers can be designed for either unidirectional or bidirectional shifts. They often have auxiliary operations for clearing the contents or for loading a new word in a single step. The diagram below shows the implementation of a shift register with operations for loading, left shifting, right shifting, and holding the current contents.

Shift registers, with some modification, are used for generating error detection codes such as cyclic redundancy check (CRC) codes. These codes are widely used in networks and data storage.

Modified shift registers can also be used for generating pseudorandom bit streams. These bit streams can be used for random number generation and for some types of cryptography.