×
嵌入式 > 技术百科 > 详情

单片机求平方根的高效快速算法

发布时间:2020-06-06 发布时间:
|

当我们使用8位MCU编程,用到求平方根算法时,如果调用自带的子程序,那么生产的代码较多,效率低下。因为软件自带算法是用浮点数类型来计算的,现实中我们往往只需要返回整型数据,采用以下代码求平方根将会大大提高计算效率。

static unsigned long sqrt(unsigned long x)
{
  register unsigned long xr;  // result register
  register unsigned long q2;  // scan-bit register
  register unsigned char f;   // flag (one bit)

  xr = 0;                     // clear result
  q2 = 0x40000000L;           // higest possible result bit
  do
  {
    if((xr + q2) <= x)
    {
      x -= xr + q2;
      f = 1;                  // set flag
    }
    else{
      f = 0;                  // clear flag
    }
    xr >>= 1;
    if(f){
      xr += q2;               // test flag
    }
  } while(q2 >>= 2);          // shift twice
  if(xr < x){
    return xr +1;             // add for rounding
  }
  else{
    return xr;
   }
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
实时控制.安全.如何加速实现未来工厂落地?