mr_lent

mr_lent定义在miracl.h

extern int   mr_lent(flash);

函数功能:返回数值的长度。

参数x:浮点数值。

1. 源码分析

mr_lent实现在mrcore.c

#define MR_FLASH      52  // 定义在mirdef.h

#ifdef  MR_FLASH
#define MR_EBITS (8*sizeof(double) - MR_FLASH)
                                  /* no of Bits per double exponent */
#define MR_BTS 16
#define MR_MSK 0xFFFF
#endif

typedef unsigned int mr_lentype;

int mr_lent(flash x)
{ /* return length of big or flash in words */
    mr_lentype lx;
    lx=(x->len&(MR_OBITS));
#ifdef MR_FLASH
    return (int)((lx&(MR_MSK))+((lx>>(MR_BTS))&(MR_MSK)));
#else
    return (int)lx;
#endif
}

flash类型数据x的长度与MR_OBITS做按位与运算。

如果定义了MR_FLASH,返回的是低位两字节与高位两字节的和,否则返回的是x的长度。

lx&(MR_MSK)取得lx的低位两个字节,(lx>>(MR_BTS))&(MR_MSK)取得lx的高位两个字节,低位两个字节与高位两个字节相加。

© phdlisl all right reserved,powered by GitbookUpdate in 2025-10-11

results matching ""

    No results matching ""