表示128位数字 C++
如何最好地呈现128位数 C++? 它必须尽可能接近内置数值类型。 /即支持所有算术运算符等。/.
我想到了创建一个会有的课程 2 64 bit 或者 4 32位数字。 或者,也许只是创建一个128位的内存块,并自己做所有事情。
有什么更简单的/当它实现自己时,我不太可能破坏的标准方法? :/
如果它可以扩展到256位,512位等,它也会很好......
我想到了创建一个会有的课程 2 64 bit 或者 4 32位数字。 或者,也许只是创建一个128位的内存块,并自己做所有事情。
有什么更简单的/当它实现自己时,我不太可能破坏的标准方法? :/
如果它可以扩展到256位,512位等,它也会很好......
没有找到相关结果
已邀请:
11 个回复
莫问
赞同来自:
当我第一次写作
http://www.boost.org/doc/libs/ ... .html
还没有。 通过历史原因保持这种答案。
我已经做了一堂课 uint128 以前,您可以查看:
http://www.codef00.com/code/uint128.h
.
这取决于 boost 自动提供数学运算符的所有变体,因此它必须支持制作本机类型的所有内容
.
内置类型有一些轻微的堤防,例如使用类似于此的字符串初始化它:
有一个方便的宏与那些类似的宏 C99, 您可以使用以下哪种:
石油百科
赞同来自:
但是,它仅适用于处理器。 64-bit.
一种或另一个方式,您可以查看多种精度的算法来解决这个问题。 mode /TI/ 制作编译器为您生成操作,否则它们必须明确写入。
您可以使用公共包。 bigint; 那些我知道的人 C++, 包括数字理论包
http://www.cdc.informatik.tu-d ... iDIA/
和
http://www.shoup.net/ntl/
, 以及包裹 bigint, 用于加密码 Crypto++ 和 Botan /. 另外,当然,有 GnuMP, 这是一个规范图书馆 C MPI /她也有一个贝壳 C++, 虽然我最后一次看着她,但她似乎记录了差不多/. 所有这些都是为了快速工作,但也可能配置为大 /1000+ 页/ 数字所以什么时候 128 您可以处理大的架空成本。 /另一方面,你没有说这个值是否有/. 和所有人 /与包装形成鲜明对比 bigint-cpp, 这是 GPL, 要么 BSD, 或者 LGPL/ - 不确定这个值是否是,但它可能非常重要。
您还可以编写自定义类型类型 uint128_t; 通常这个类销售几乎与通常的阶级相同的算法。 MPI, 只严格编码只有 2 或者 4 元素。 如果您想知道如何实施此类算法,则是一个很好的参考
http://www.cacr.math.uwaterloo ... 4.pdf
当然,如果您真的不需要所有算术运算,请执行此操作 /师和模块,特别是非常复杂/. 例如,如果您只需要追踪仪表,那么可以假设溢出 64 你可以把它作为一对夫妇呈现 64 bit 长长并手动进行转移:
当然,与谁更容易处理共同的包裹 MPI 或用户类 uint128_t.
知食
赞同来自:
尝试
http://sourceforge.net/projects/cpp-bigint/
江南孤鹜
赞同来自:
对于范围内的类型 128 到 1024 页。
</boost>
卫东
赞同来自:
https://gcc.gnu.org/onlinedocs ... .html
128位整数类型,适用于支持它的处理器。 您可以访问它:
更新 02020-02-10: 根据
https://quuxplusone.github.io/ ... gral/
: GCC, Clang 和 Intel ICC 支持内置类型 _ _ int128.
帅驴
赞同来自:
http://www.gmplib.org/
奔跑吧少年
赞同来自:
http://gmplib.org/
, 当然,它可以解决你的问题,尽管整数固定大小是不必要的,以及稍微繁琐的使用 /这是一个图书馆 C, 但不是 C++/.
快网
赞同来自:
裸奔
赞同来自:
http://sourceforge.net/projects/cpp-bigint/
/
冰洋
赞同来自:
窦买办
赞同来自:
因此,我不确定它的数学运营是实现的