快速开根号计算

2022-08-02 02:23:11   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《快速开根号计算》,欢迎阅读!
根号,快速,计算

/****************************************/

/*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;

}

本文来源:https://www.dywdw.cn/95948ad980eb6294dd886c94.html

相关推荐
推荐阅读