📄 mpdigdiv.c
字号:
#include "os.h"#include <mp.h>#include "dat.h"//// divide two digits by one and return quotient//voidmpdigdiv(mpdigit *dividend, mpdigit divisor, mpdigit *quotient){ mpdigit hi, lo, q, x, y; int i; hi = dividend[1]; lo = dividend[0]; // return highest digit value if the result >= 2**32 if(hi >= divisor || divisor == 0){ divisor = 0; *quotient = ~divisor; return; } // at this point we know that hi < divisor // just shift and subtract till we're done q = 0; x = divisor; for(i = Dbits-1; hi > 0 && i >= 0; i--){ x >>= 1; if(x > hi) continue; y = divisor<<i; if(x == hi && y > lo) continue; if(y > lo) hi--; lo -= y; hi -= x; q |= 1<<i; } q += lo/divisor; *quotient = q;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -