XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
div64.c 文件参考

XWOS通用库:64位除法 更多...

#include <xwos/standard.h>
#include <xwos/lib/div64.h>
div64.c 的引用(Include)关系图:

浏览源代码.

函数

static xwu32_t xwdiv64_32 (xwu64_t *n, xwu32_t divisor)
 用一个32位无符号整数除以一个64位无符号整数
 
xwu32_t xwdiv64 (xwu64_t *n, xwu32_t divisor)
 64位除法运算
 

详细描述

XWOS通用库:64位除法

作者

在文件 div64.c 中定义.

函数说明

◆ xwdiv64_32()

static xwu32_t xwdiv64_32 ( xwu64_t n,
xwu32_t  divisor 
)
static

用一个32位无符号整数除以一个64位无符号整数

参数
[in,out]n指向无符号64位整数缓冲区的指针,
  • (I) 作为输入时,表示被除数
  • (O) 作为输出时,返回商
[in]divisor除数
返回
余数

在文件 div64.c49 行定义.

50{
51 xwu64_t rem = *n;
52 xwu64_t b = divisor;
53 xwu64_t res;
54 xwu64_t d = (xwu64_t)1;
55 xwu32_t high = (xwu32_t)(rem >> (xwu32_t)32);
56
57 res = 0;
58 if (high >= divisor) {
59 high /= divisor;
60 res = (xwu64_t)high << (xwu64_t)32;
61 rem -= (((xwu64_t)high * (xwu64_t)divisor) << (xwu64_t)32);
62 }
63
64 while (((xws64_t)b > (xws64_t)0) && (b < rem)) {
65 b = b + b;
66 d = d + d;
67 }
68
69 do {
70 if (rem >= b) {
71 rem -= b;
72 res += d;
73 }
74 b >>= (xwu64_t)1;
75 d >>= (xwu64_t)1;
76 } while ((xwu64_t)0 != d);
77
78 *n = res;
79 return (xwu32_t)rem;
80}
int64_t xws64_t
Definition type.h:319
uint64_t xwu64_t
Definition type.h:303
uint32_t xwu32_t
Definition type.h:266
这是这个函数的调用关系图: