0

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

たとえば、nを112ビットのバイナリに変換して、それを256ビットの部分に分割したいとします。

ありがとう

4

1 に答える 1

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

于 2010-03-05T21:10:43.653 に答える