2010-03-04 12 views
0

En utilisant GMP sur c, j'ai un grand nombre entier "mpz_t n" sous forme décimale, comment puis-je le couper en 2 parties? En fait, ces 2 parties devraient avoir la même longueur en binaire. Par exemple, peut-être que je peux convertir le n en un binaire de 112bits, alors je veux le couper en 2 parties 56bitsComment couper un mpz_t en deux parties en utilisant GMP lib sur C?

Merci

+0

Est-ce que quelqu'un sait à ce sujet? Merci Thanx – allenzzzxd

Répondre

0

J'utiliser temp = mpz_sizeinbase (n, 2) pour obtenir le nombre de bits dans votre numéro original et puis utilisez mpz_tdiv_q_2exp (q, n, température >> 1) et mpz_tdiv_r_2exp (r, n , temp >> 1) pour obtenir les moitiés supérieure et inférieure de votre numéro d'origine.

Selon la façon dont vous voulez traiter une longueur de bits impairs, vous devrez peut-être ajuster le calcul de temp >> 1.

HTH, casevh

+0

, il semble beaucoup mieux que la méthode que j'utilise maintenant. Merci beaucoup – allenzzzxd