单片机程序看不懂

[复制链接]
3296|10
 楼主| newkiwi 发表于 2012-7-6 18:34 | 显示全部楼层 |阅读模式
short sqrt_16( unsigned long M)   
{
    unsigned int N, i;
    unsigned long tmp, ttp;
    if( M == 0 )            
        return 0;
   
    N = 0;
   
    tmp = ( M >> 30 );        
    M <<= 2;
    if( tmp > 1 )            
    {
        N ++;               
        tmp -= N;
    }
   
    for( i=15; i>0; i-- )   
    {
        N <<= 1;           
        
        tmp <<= 2;
        tmp += (M >> 30);  
        
        ttp = N;
        ttp = (ttp<<1)+1;
        
        M <<= 2;
        if( tmp >= ttp )   
        {
            tmp -= ttp;
            N ++;
        }      
    }
   
    return N;
}
板砖横飞 发表于 2012-7-6 19:38 | 显示全部楼层
这个我到现在也没看懂,先用起来再说了,就像库函数一样,知道输入输出,能用就行了,有时也没有必要较真,想有的函数不公布源码呢,不是也照样用吗
zoomone 发表于 2012-7-6 21:58 | 显示全部楼层
同意楼上。貌似是一种库函数。。。
aihe 发表于 2012-7-6 23:44 | 显示全部楼层
对于不懂的东西有两种方法处理他
1、查找相关资料,直到弄懂为止
2、无视它,绕过它
wskwxfss 发表于 2012-7-7 09:24 | 显示全部楼层
用二进制短除求平方根
willy_see 发表于 2012-7-7 16:15 | 显示全部楼层
我就是我lxw 发表于 2012-7-7 19:01 | 显示全部楼层
会用不就行了。
megderrr 发表于 2012-7-7 21:29 | 显示全部楼层
直接用就OJ了
shell.albert 发表于 2012-7-7 22:13 | 显示全部楼层
注释!注释!!注释!!!
fjzzclc 发表于 2012-7-14 15:21 | 显示全部楼层
看不懂
liang7143 发表于 2012-7-14 15:52 | 显示全部楼层
本帖最后由 liang7143 于 2012-7-14 15:55 编辑

呵呵,给LZ看一看一个更晕的函数
求平方根的倒数,等同于1/sqrt(x)



  1. float InvSqrt(float x)
  2. {
  3.     float xhalf = 0.5f*x;
  4.     int i = *(int*)&x; // get bits for floating value
  5.     i = 0x5f3759df - (i>>1); // gives initial guess
  6.     x = *(float*)&i; // convert bits back to float
  7.     x = x*(1.5f-xhalf*x*x); // Newton step, repeating increases accuracy
  8.     return x;
  9. }


详细资料可以看附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:No road of flower leads to glory.

0

主题

52

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部