But 2.1 quadrillion only requires 41 bits of precision to represent (0x1E8F1C10800).
Are you sure about that?
21,000,000 * 100,000,000 =
2,
100,
000,
000,
000,000
0x1E8F1C10800 =
2,
100,
000,
000,
000You seem to be off by a factor of 1000.
This means that the upper 23 bits must be zero, no?
If there ever were a situation where all the possible bitcoins were sent to a single output (that really is impossible, but lets use it for an upper bound), then the resulting value would be:
0x775f059e40090
This would require 51 bits, leaving an extra 9 bits that remain unused.