【发布时间】:2017-01-16 14:45:45
【问题描述】:
最近我需要一个 BigInt C++ 库,我找到了this。
但我无法弄清楚顶部指定的 const int base 和 base_digits 是什么意思。
还有“base 和 base_digits 必须一致”的意思。
如果我想要 base=10,我应该选择什么 base_digits 值?
我尝试设置 base = 10 和 base_digits = 1,但输出更改为不正确的内容。
【问题讨论】:
最近我需要一个 BigInt C++ 库,我找到了this。
但我无法弄清楚顶部指定的 const int base 和 base_digits 是什么意思。
还有“base 和 base_digits 必须一致”的意思。
如果我想要 base=10,我应该选择什么 base_digits 值?
我尝试设置 base = 10 和 base_digits = 1,但输出更改为不正确的内容。
【问题讨论】:
此实现的“基础”用于表示大整数的结构。如果您根据数字基数的经典定义(例如基数 2 = 二进制)来考虑基数,则实现将每个“数字”存储为向量中的 int。换句话说,该实现将您的大整数表示为以 n 为底的一个或多个“数字”的向量,其中 n 默认情况下 = 1000000000。
“base 和 base_digits 必须一致”仅仅是因为实现在某些地方使用 base_digits 作为计算实际十进制(以 10 为底)数字的 base 值长度的快捷方式。
您不想使用 base = 10,因为这样您会将整数的每个单独的数字表示为向量内的单独整数 - 效率不高!如果您使用 base = 100,您将用向量中的整数表示每对数字,base = 1000 将用整数表示每个三元组,依此类推。
【讨论】: