I see that integer types (Bignum and Co.) support [] to get the kth bit out.
They don't seem to have each (which is interesting) so what is the
most effective way to get the most significant non-zero bit in a bignum?
Obviously log to base 2 is heavy machinary for this task, and the only
other way I can see to do this is:
top = my_number.size * 8
while ((my_number[top] == 0) && (top > 0) ) { top -= 1 }
but this seems a little primitive.
Why do I need this stuff? I'm trying to create Cyclic Redundancy Check
information for marshalled data I'm sending over UDP. AFAIK UDP guarantees
nothing -- arrival, ordering, or intact data may, or may not happen.
The CRC algorithm relies on a bitwise long-division-like process, but using
XOR instead of divide, so hence the need to align MSBs frequently.
Hugh