Как разрезать mpz_t на две части, используя GMP lib на C? - PullRequest
0 голосов
/ 04 марта 2010

Используя GMP на c, у меня есть большое целое число "mpz_t n" в десятичной форме, как я могу разрезать его на 2 части? На самом деле эти две части должны иметь одинаковую длину в двоичном виде.

Например, может быть, я смогу преобразовать n в двоичный файл из 112 бит, а затем я хочу разделить его на 2 56-битные части.

Спасибо

1 Ответ

0 голосов
/ 06 марта 2010

Я бы использовал temp = mpz_sizeinbase (n, 2), чтобы получить количество бит в вашем исходном числе, а затем использовал бы mpz_tdiv_q_2exp (q, n, temp >> 1) и mpz_tdiv_r_2exp (r, n, temp >> 1) чтобы получить верхнюю и нижнюю половину вашего оригинального номера.

В зависимости от того, как вы хотите обработать нечетную битовую длину, вам может потребоваться настроить вычисление temp >> 1.

НТН, casevh

...