繁体   English   中英

大Integer Class C++

[英]Big Integer Class C++

我想在 C++ 中编写一个无符号的 Big Int 库作为练习,但是我想避免使用传统的字符向量来存储单个数字。 由于这种方法浪费了 memory 的数量。

使用无符号短整数向量(即 16 位正整数)是否可行,或者有更好的方法吗?

为了澄清,我会将“12345678”存储为 {1234, 5678}。

由于您所说的原因,在相应的char中存储数字肯定不是传统的 - 它浪费了 memory。 使用 N 位整数来存储 N 个对应位是常用的方法。 它不会浪费 memory,而且实际上更容易实现(尽管更难调试,因为整数通常很大)。

是的,对单个信息单元(广义的“数字”)使用unsigned short int是一个好主意。 但是,请考虑使用 32 位或 64 位整数 - 它们更接近 CPU 寄存器的大小,因此您的实现会更有效率。

语法的一般概念:

class BigInt
{
private:
    std::vector<uint64_t> digits;
};

您应该决定是否将最低有效数字存储在较小或较大的索引中。 我认为越小越好(因为加法、减法和乘法算法从 LSB 开始),但这是您的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM