【问题标题】:How to cut a mpz_t into two parts using GMP lib on C?如何使用 C 中的 GMP 库将 mpz_t 分成两部分?
【发布时间】:2010-03-04 15:24:27
【问题描述】:

在c上使用GMP,我有一个十进制形式的大整数“mpz_t n”,我怎样才能把它分成两部分?实际上,这两个部分在二进制中应该具有相同的长度。

例如,也许我可以将 n 转换为 112 位的二进制,然后我想将它切割成 2 个 56 位的部分。

谢谢

【问题讨论】:

  • 有人知道吗?谢谢

标签: c binary decimal bignum gmp


【解决方案1】:

我会使用 temp = mpz_sizeinbase(n,2) 来获取原始数字中的位数,然后使用 mpz_tdiv_q_2exp(q, n, temp>>1) 和 mpz_tdiv_r_2exp(r, n, temp>>1)获得原始数字的上半部分和下半部分。

根据您要如何处理奇数位长度,您可能需要调整 temp>>1 的计算。

HTH, 案例vh

【讨论】:

  • thanx,它似乎比我现在使用的方法好得多。非常感谢
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2011-01-10
  • 2017-04-01
  • 1970-01-01
  • 2010-11-27
相关资源
最近更新 更多