ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

快速求无符号整数乘积的方法

快速求无符号整数乘积的方法

x,y是两个n位的无符号整数,通过逐位判断y的每1位是0还是1,若是1,执行加法和左移操作;若是0,则只执行左移操作,能较快速的计算出x与y的乘积。

源程序:

#define uchar unsigned char uchar x,y; uchar multiply(uchar,uchar); void main() { uchar result; x=10;y=12; result=multiply(x,y); } uchar multiply(uchar x1,uchar y1) { uchar sum=0; uchar shiftedx,n,j; shiftedx=x1; n=8; //y1是8位二进制数 for(j=0;j<n;j++) { if((y1&0x01)==1) //y1的最低位为1时执行加法操作 sum=sum+shiftedx; y1=y1>>1; //y1右移1位 shiftedx<<=1; //shiftedx左移1位 } return sum; //返回乘积 }

运行结果:



RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进