mulsi3.c
来自「标准c库代码,可以应用于各个系统提供了大量的基本函数」· C语言 代码 · 共 73 行
C
73 行
typedef union { struct { unsigned int msw; unsigned int lsw;} s; long v;} u;long __mulsi3(u a, u b){ int s; long pp1; long pp2; long r; if (a.s.msw == 0 && b.s.msw == 0) { return (long)a.s.lsw * b.s.lsw; } s = 0; if (a.v < 0) { s = 1; a.v = - a.v; } if (b.v < 0) { s = 1-s; b.v = - b.v; } pp1 = (long)a.s.lsw * b.s.lsw ; pp2 = (long)a.s.lsw * b.s.msw + (long)a.s.msw * b.s.lsw; pp1 += pp2 << 16; if (s) { pp1 = -pp1; } return pp1;}long __mulpsi3(long a, long b){ return a*b;}short __mulhi3(short a, short b){ int r; r = 0; while (a) { if (a & 1) { r += b; } b<<=1; a>>=1; } return r;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?