Shift registers are constructed using flip-flops connected in a way to store and transfer digital data. Data is stored at the Q output of D flip-flops during a clock pulse. Shift registers allow data to be transferred between flip-flops upon a clock edge. There are four types of data movement: serial in serial out, serial in parallel out, parallel in serial out, and parallel in parallel out. Shift registers can be loaded serially or in parallel and are used in applications like pseudo random pattern generators, ring counters, and Johnson counters.