2021SC@SDUSC 山东大学软件学院软件工程应用与实践
1、mrbits.c结构
mrbits.c的总体结构如下,,主要实现了logb2()、expb2()、bigbits()、sftbit()几个在miracl开源库中比较重要的函数,这一次的博客就是读一下这函数的功能。
2、源代码
int logb2(_MIPD_ big x)
{ /* returns number of bits in x */
int xl,lg2;
mr_small top;
#ifdef MR_OS_THREADS
miracl *mr_mip=get_mip();
#endif
if (mr_mip->ERNUM || size(x)==0) return 0;
MR_IN(49)
#ifndef MR_ALWAYS_BINARY
if (mr_mip->base==mr_mip->base2)
{
#endif
xl=(int)(x->len&MR_OBITS);
lg2=mr_mip->lg2b*(xl-1);
top=x->w[xl-1];
while (top>=1)
{
lg2++;
top/=2;
}
#ifndef MR_ALWAYS_BINARY
}
else
{
copy(x,mr_mip->w0);
insign(PLUS,mr_mip->w0