Shift registers are used for temporary storage and can store multiple bits. There are two types: serial load and parallel load. Serial load registers shift data in or out one bit at a time on each clock cycle, while parallel load registers allow loading/output of all bits simultaneously. Common applications of shift registers include ring counters, Johnson counters, and pseudo-random pattern generators. A ring counter shifts data through the register and back to the first stage, counting through a fixed number of states. A Johnson counter also shifts data through the stages but with the last stage complement fed back to first, allowing it to count through more states than a ring counter.