Bit representation of the hashing multiplication method In the picture below from CLRS, I fail to understand why exactly $h(k)$ = the $p$ highest-order bits of the lower w-bit half of the product.

For context, this is supposed to compute 
$h(k) = \lfloor m (k A \;  \text{mod} 1) \rfloor $





For further context, CLRS mentions the following, but I still don't quite get why those $p$ highest-order bits are the ones we are looking for.
$(kA \bmod 1)$ is in the range $[0,1)$. So multiplying that by $2^p$ gives a number in the range $[0,2^p)$. That is:

$$\left\lfloor 2^p (kA \bmod 1) \right\rfloor = \left\lfloor 2^p (kA \bmod 1) \right \rfloor  \bmod 2^p$$

Once you've worked that out, it's not too hard to see:

$$\left\lfloor 2^p (kA \bmod 1) \right \rfloor  \bmod 2^p = \left\lfloor kA 2^p  \right\rfloor \bmod 2^p = \left\lfloor \frac{ks}{2^{w-p}}  \right\rfloor \bmod 2^p$$

So you can implement this by taking $ks$, shifting it $w-p$ bits to the right, then taking the lowest order $p$ bits. Which is exactly the same as taking the highest order $p$ bits of the low word.