如何在C中使用GMP库将mpz_t分成两部分?

时间:2010-03-04 15:24:28

标签: c binary decimal bignum gmp

在c上使用GMP,我有一个十进制形式的大整数“mpz_t n”,如何将其分成两部分?实际上,这两个部分应该具有相同的二进制长度。

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

由于

1 个答案:

答案 0 :(得分:0)

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

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

HTH, casevh