文档库 最新最全的文档下载
当前位置:文档库 › 快速开根号计算

快速开根号计算

/****************************************/
/*Function: 开根号处理 */
/*入口参数:被开方数,长整型 */
/*出口参数:开方结果,整型 */
/****************************************/
/*
UINT SqrtQuick(unsigned long M)
{
unsigned char i;
UINT N;
unsigned long tmp, ttp; // 结果、循环计数

if(M == 0) // 被开方数,开方结果也为0
return 0;

N = 0;

tmp = (M >> 30); // 获取最高位:B[m-1]
M <<= 2;
if(tmp) // 最高位为1
{
N = 1; // 结果当前位为1,否则为默认的0
tmp -= 1;// -= N;
}

for(i = 15; i > 0; i--) // 求剩余的15位
{
N <<= 1; // 左移一位

tmp <<= 2;
tmp += (M >> 30); // 假设

ttp = ((unsigned long)N << 1) + 1;
//ttp++;//对于长整数不可用自加或自减,而是用+1来取代

M <<= 2;
if (tmp >= ttp) // 假设成立
{
tmp -= ttp;
N += 1;
}
}

return N;
}

相关文档
相关文档 最新文档