【问题标题】:Explain Big int in C? [closed]解释 C 中的 Big int? [关闭]
【发布时间】:2016-02-13 11:37:46
【问题描述】:

我需要在 C 中保存一个 10^20 范围内的值。听说C中的大int可以容纳这么大的值。如何在C中声明和使用大int。

有没有人知道一个简单的方法来做到这一点?任何帮助将不胜感激!

【问题讨论】:

  • 好吧,10 ^ 20 确实适合 C 中的普通 int
  • 10^20 大约是 2^65,所以 128 位 int 可以处理,看看你的编译器上是否有int128_t
  • @user3528438:什么? 10^20 == 30。如果INT_MAX < 30,你的实现是不合格的。
  • @EOF "^" 不是"^"。
  • @user3528438 int128_t如何使用

标签: c algorithm


【解决方案1】:

你可以使用类型unsigned long long,范围至少是0..18446744073709551615,但那只是1.8E19,所以比你需要的略少。如果你真的想超过 64 位,你可以检查你的系统是否支持 128 位整数(如__int128__int128_tint128_t 或类似类型),或者你需要一个多精度包,如 GMP .

【讨论】:

  • 假设提供__int128 的编译器也提供int128_t 是否安全?
  • __int128 是否可用取决于您的系统。你在什么环境下编程?如果可用,它只是一个普通类型,如intlong int
  • @AswinRaghavan:这个答案对你有帮助吗?
  • @user3528438:恐怕不是。我在 linux 上使用 gcc 和 glibc,__int128_t 可用且功能正常,但int128_t 不可用,intmax_t 有 64 位。 int128_t 的可用性将对 C 库和编译器产生广泛的影响,因为 intmax_t 将需要至少 128 位,预处理算法将以 128 位完成,等等。
猜你喜欢
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 2015-05-18
  • 2012-12-15
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多