我希望深入了解看起来像部分乘法的东西。
#define LOW(x) ((x)&0xffffffff)
#define HIGH(x) ((x)>>32)
unsigned long long NotMultiply(unsigned long long x, unsigned long long y)
{
return HIGH(x)*HIGH(y) + LOW(x)*LOW(y);
}
该函数迭代多次,如下:
unsigned long long DoBusyWork( unsigned long long x, unsigned long long y, int n)
{
while (n--)
x = NotMultiply(x,y);
return x;
}
有没有计算这个结果的捷径?
对于 x == y 的情况呢?
任何指向更多信息的链接都会有所帮助..