0


0

CでGMP libを使用してmpz_tを2つの部分にカットする方法は?

cでGMPを使用すると、10進数形式の大きな整数「mpz_t n」があります。どうすれば2つの部分に分割できますか? 実際、これらの2つの部分はバイナリで同じ長さでなければなりません。

たとえば、nを112ビットのバイナリに変換してから、2つの56ビット部分に切り分けたい場合があります。

ありがとう

1 Answer


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