我正在编写一个 c++ 任意整数库作为作业。我在内部将数字表示为无符号整数的向量,以 10^n 为基数,其中 n 尽可能大,同时适合单个无符号整数数字。
我做出这个选择是为了在空间、性能和数字访问之间进行权衡(它允许我获得比使用 base 10 更好的性能,而在转换为人类可读字符串时不会增加任何复杂性)。
例如:
base10(441243123294967295) 18 位
base1000000000(441243123,294967295) 2 位(逗号分隔)
使用 uint32 的内部表示
[00011010 01001100 11010101 11110011] [00010001 10010100 11010111 11111111]
为了完成作业,我必须实现位移和其他位运算符。对具有这种内部表示的数字实施移位是否有意义?
我应该更改为基数 2^n 以便内部表示的所有位都有意义吗?