This document discusses registers and counters in digital logic design. It begins by defining registers as flip-flops that store binary data and can transfer data in parallel or serial. Shift registers are introduced as registers that can shift data bit by bit. Various types of shift registers are described, including their uses in serial-parallel conversion and counting applications. Ring counters and Johnson counters are introduced as counter circuits built from shift registers. Asynchronous and synchronous counters are also discussed.