CでGMP LIBを使用してMPZ_Tを2つの部分にカットする方法は?
質問
cでGMPを使用して、10進数の大きな整数「MPZ_T N」がありますが、どうすれば2つの部分にカットできますか?実際、これらの2つの部分はバイナリで同じ長さを持つ必要があります。
たとえば、nを112ビットのバイナリに変換することができるかもしれませんが、2つの56ビット部品にカットしたいと思います。
ありがとう
解決
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
所属していません StackOverflow