📄 mpleft.c
字号:
#include "os.h"#include <mp.h>#include "dat.h"// res = b << shiftvoidmpleft(mpint *b, int shift, mpint *res){ int d, l, r, i, otop; mpdigit this, last; // a negative left shift is a right shift if(shift < 0){ mpright(b, -shift, res); return; } // b and res may be the same so remember the old top otop = b->top; // shift mpbits(res, otop*Dbits + shift); // overkill res->top = DIGITS(otop*Dbits + shift); d = shift/Dbits; l = shift - d*Dbits; r = Dbits - l; if(l == 0){ for(i = otop-1; i >= 0; i--) res->p[i+d] = b->p[i]; } else { last = 0; for(i = otop-1; i >= 0; i--) { this = b->p[i]; res->p[i+d+1] = (last<<l) | (this>>r); last = this; } res->p[d] = last<<l; } for(i = 0; i < d; i++) res->p[i] = 0; // normalize while(res->top > 0 && res->p[res->top-1] == 0) res->top--;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -