1 bit register with data flip flop doesn't store bit? A 1-bit register:




  Credit:
  Elements of Computing Systems
  by Noam Nisan and Shimon Schocken
  ISBN-13: 978-0262640688


I know that the data flip flop outputs the input at the previous time step.

Based on this, I created this table (not sure if correct):

Note: For the Mux, 1 is for in and 0 is for DFF output.

$$
\begin{array}{|c|c|c|c|}
\hline
\text{In} &amp; \text{DFF In} &amp; \text{Load} &amp; \text{Out} \\ \hline
1 &amp; 1 &amp; 1 &amp; 0 \\ \hline
1 &amp; 0 &amp; 0 &amp; 1 \\ \hline
1 &amp; 1 &amp; 0 &amp; 0 \\ \hline
\end{array}
$$

The output is always alternating, no bit is being stored. It should constantly output 1 while load is 1 because that's what we initially stored.

I know that a register does actually store data, so something is wrong in my understanding of this.
Your table is incorrect. A MUX element selects one of its inputs based on a secondary input. In this case it's a binary mux and load is used to select the input.

If we say that load = 0 means it selects the DFF and load = 1 means that it selects in you shall see that when load = 0 the circuit repeatedly refreshes the previous value, and load = 1 will read the new value from in.