What's the matter of Cantor's diagonal argument in binary system?
There are several ways to fix this; here are two.
We can look at more than one digit at a time. Given our starting list $$(0.a^1_1a^2_2a^3_3, \quad 0.a^2_1a^2_2a^2_3...,\quad 0.a^3_1a^3_2a^3_3..., \quad ...)$$ of binary representations of reals in $[0,1)$, we define a sequence $b_1,b_2,b_3,...$ as follows: the two-digit block $b_{2i-1}b_{2i}$ is "$01$" if $a_{2i-1}a_{2i}$ is not "$01,$" and $b_{2i-1}b_{2i}$ is "$10$" otherwise.
We can just transfer between contexts. We don't have to use the binary representations; we could always switch to (say) decimal representations, apply diagonalization there (where having more than two digits gives us "room" to work without having to consider multiple digits at once), and then convert back to binary. This might feel like cheating, but it's perfectly valid.
I'd say that both approaches have their advantages; ultimately each is teaching a kind of flexibility when it comes to constructions, either at the specific implementation level or right at the formulation level.