In plain English, why does conversion from hexadecimal to binary work so cleanly?

Solution 1:

This works not only for $16$, but also for any other power of $2$. And the same phenomenon occurs in all bases.

Maybe an easy way to see it is to look at the situation in base $10$ instead of base $2$, for a more familiar landscape. Say I want to write the number $12345678$ in base $100$. Of course we don't have $100$ familiar symbols available to express single digits in base $100$, so one easy solution is to write them using base $10$: $[0],[1],[2],\ldots,[99]$. Then $$ 12345678=[12][34][56][78]. $$

$\def\times{ \!\! ×\! \! }$ In more detail, \begin{align} 12345678&=1\times10^7+2\times10^6+3\times10^5+4\times10^4+5\times10^3+6\times10^2+7\times10^1+8\times10^0\\ \ \\ &=[1\times10^7+2\times10^6]+[3\times10^5+4\times10^4]+[5\times10^3+6\times10^2]+[7\times10^1+8\times10^0]\\ \ \\ &=12\times10^6+34\times10^4+56\times10^2+78\\ \ \\ &=12\times100^3+34\times100^2+56\times100+78. \end{align} The key facts are that $$ 1\times10^7+2\times10^6=10\times10^6+2\times10^6=12\times10^6, $$ etc.

If we would do it in base $1000$, it would be $$ 12345678_{10}=[12][345][678]_{1000}. $$

Now, when the bases are $16$ and $2$, the game is the same: since $16=2^4$, groups of four binary digits (starting from the right) will form a single hexadecimal digit. So for instance $$ 11110010_2=[1111][0010]_{16}=F2_{16}=15\times 16^1+2\times16^0=242. $$ Or, for an example in base $8$, $$ 11110010_2=2^7+2^6+2^5+2^4+2^1=(2+1)2^6+(4+2+0)2^3+(0+2+0)=362_8, $$ $$ 11110010_2=[11][110][010]_8=362_8. $$

Solution 2:

Let's define a notation for "base 1000" where the every "base 1000 digit" consist of a three-base10-digits group.

Thus, the base-10 number 123456789 would read 123 456 789 in base 1000.

As you can see, conversion between these is really, really simple. The reason is that a certain number of digits in the lower base exactly represent a digit in the higher base. This is true for all bases where the higher base is a power of the lower one. For example, base 3 and base 9 could be easily converted, while base 10 and base 20 could not.

For base 2 and base 16, the same applies, only that we decided to write "8" instead of 1000. It's just a different symbol, though...

Solution 3:

A preliminary observation: in base $10,$ multiplying a number by a power of $10$ amounts to shifting the digits leftward: $$ 10^3\cdot148=1000\cdot148=148000. $$ The analogous statement is true in any base. In what follows, numbers without a subscript are base-$10;$ otherwise, the subscript indicates the base: $$ \begin{aligned} 256\cdot A8_{16}&=16^2\cdot A8_{16}=10_{16}^2\cdot A8_{16}=100_{16}\cdot A8_{16}=A800_{16},\\ 16\cdot B_{16}&=16^1\cdot B_{16}=10_{16}B_{16}=B0_{16},\\ 16\cdot1011_2&=2^4\cdot1011_2=10000_2\cdot1011_2=10110000_2. \end{aligned} $$

Now let's look at your question. The second and third lines above represent the same multiplication, $16\cdot11.$ Multiplication by $16$ shifts hexadecimal numbers left by one digit and binary numbers left by four digits.

With this in mind, consider the hexadecimal number, $$ \begin{aligned} A83_{16}&=16^2\cdot10+16^1\cdot8+16^0\cdot3\\ &=16^2\cdot1010_2+16^1\cdot1000_2+16^0\cdot0011_2\\ &=2^8\cdot1010_2+2^4\cdot1000_2+2^0\cdot0011_2. \end{aligned} $$ Write each of the three terms separately, using the shift idea: $$ \begin{aligned} 1010_2\cdot2^8&=1010\,0000\,0000_2\\ 1000_2\cdot2^4&=0000\,1000\,0000_2\\ 0011_2\cdot2^0&=0000\,0000\,0011_2.\\ \end{aligned} $$ The sum is the concatenation of the digits since in each block of four binary digits, only one of the three terms is non-zero.