I'm worried about how wasteful this becomes when we use the `BigInteger`. We should follow-up with performance and allocation tracking. I also wouldn't mind taking a crack at a specialized bit set with shift as an exercise :)