首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GMP库函数

GMP库函数
EN

Stack Overflow用户
提问于 2012-08-01 18:28:36
回答 2查看 404关注 0票数 1

GMP库中有没有函数可以给我任何GMP变量的bitLength?

代码语言:javascript
复制
mpz_t temp;
mpz_init(temp);
mpz_set_ui(temp,356678789);

那么如何找到temp的位长呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 18:45:49

也许有一个更好的方法,但在阅读了the docs之后,我想到了这个方法:

代码语言:javascript
复制
mp_bitcnt_t msb(mpz_t& m) {
  mpz_t n = m.get_moz_t();
  mp_bitcnt_t remaining = mpz_popcount(n), last = -1;
  while (remaining) {
    --remaining;
    last = mpz_scan1(n, last + 1);
  }
  return last;
}
票数 0
EN

Stack Overflow用户

发布于 2012-08-01 19:23:56

GMP有一个库函数可以为您做这件事:

代码语言:javascript
复制
size_t mpz_sizeinbase (mpz_t OP, int BASE)

mpz_sizeinbase(temp,2);是表示abs(temp)所需的位数

返回OP的大小,单位为给定基数的位数。基数可以在2到62之间变化。OP的符号被忽略,只使用绝对值。结果要么是精确的,要么是太大了。如果BASE是2的幂,则结果始终是精确的。如果OP为零,则返回值始终为1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11757300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档