最近看到LKS32AT085/LKS32AT086车规级芯片能够实现开方运算100ns内完成。有感于他们的强大计算能力。也就是说可以直接进行开放运算而且仅仅用了100ns。请大家看一下通常情况下我们的开放运算都要如何进行计算,就会更加有感触。
unsigned int sqrt_16(unsigned long M)
{
unsigned int N, i;
unsigned long tmp, ttp; // 结果、循环计数
if (M ==0) // 被开方数,开方结果也为0
return 0;
N = 0;
tmp = (M >> 30); //获取最高位:B[m-1]
M <<= 2;
if (tmp >1)
{
N++;
tmp -= N;
}
for (i=15; i>0; i--) // 求剩余的15位
{
N <<=1;
tmp <<= 2;
tmp += (M >>30);
ttp = N;
ttp = (ttp<<1)+1;
M <<= 2;
if (tmp >=ttp)
{
tmp -=ttp;
N ++;
}
}
return N;
}
|