【问题标题】:BigInt C++ library consistency with bases [closed]BigInt C++ 库与基础的一致性[关闭]
【发布时间】: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,但输出更改为不正确的内容。

【问题讨论】:

    标签: c++ bigint


    【解决方案1】:

    此实现的“基础”用于表示大整数的结构。如果您根据数字基数的经典定义(例如基数 2 = 二进制)来考虑基数,则实现将每个“数字”存储为向量中的 int。换句话说,该实现将您的大整数表示为以 n 为底的一个或多个“数字”的向量,其中 n 默认情况下 = 1000000000。

    “base 和 base_digits 必须一致”仅仅是因为实现在某些地方使用 base_digits 作为计算实际十进制(以 10 为底)数字的 base 值长度的快捷方式。

    您不想使用 base = 10,因为这样您会将整数的每个单独的数字表示为向量内的单独整数 - 效率不高!如果您使用 base = 100,您将用向量中的整数表示每对数字,base = 1000 将用整数表示每个三元组,依此类推。

    【讨论】:

    • 假设我想使用base = 10,那么根据你的解释base_digits应该是= 1,但它会产生不正确的结果
    • 另外,如果我将 base 和 base_digits 的值更改为默认值以外的任何值,那么输出就会不正确,为什么会这样?
    • 嗯...我不确定。你能举个例子吗?扫描那里的代码看起来应该可以工作。
    • 我的错。它确实有效。实现中还有其他一些错误。谢谢你的解释。
    • 我尝试了几种不同的基础,使用代码中内置的示例得到了相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2014-04-21
    • 2012-07-07
    • 2012-05-21
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多