永发信息网

手工开平方看不懂程序???

答案:2  悬赏:30  手机版
解决时间 2021-03-22 03:58
  • 提问者网友:难遇难求
  • 2021-03-21 17:28

#include

//__CONFIG(WDTEN & INTIO & PWRTDIS& MCLREN & UNPROTECT & OSC_8MHZ & BORDIS);

unsigned short result=0;

unsigned short my_sqrt2(unsigned long a)
{//8M
unsigned long rem = 0;
unsigned long root = 0;
unsigned long divisor = 0;
int i;

for(i=0; i<16; i++)
{
root <<= 1;
rem = ((rem << 2) + (a >> 30));//余数加最高的两位
a <<= 2;//最高2bit移出
divisor = (root<<1) + 1;
if(divisor <= rem)//余数>=4p+1
{
rem -= divisor;
root++;//就上1
}
}
return (unsigned short)(root);
}

void main()
{
unsigned long i=100;

while(1)
{
result=my_sqrt2(i);
if(result<1)
result=0;
// CLRWDT();

}
}
最佳答案
  • 五星知识达人网友:低血压的长颈鹿
  • 2021-03-21 19:07
分为整数开平方和小数开平方。
1、整数开平方步骤:
(1)将被开方数从右向左每隔2位用撇号分开;
(2)从左边第一段求得算数平方根的第一位数字;
(3)从第一段减去这个第一位数字的平方,再把被开方数的第二段写下来,作为第一个余数;
(4)把所得的第一位数字乘以20,去除第一个余数,所得的商的整数部分作为试商(如果这个整数部分大于或等于10,就改用9左试商,如果第一个余数小于第一位数字乘以20的积,则得试商0);
(5)把第一位数字的20倍加上试商的和,乘以这个试商,如果所得的积大于余数时,就要把试商减1再试,直到积小于或等于余数为止,这个试商就是算数平方根的第二位数字;
(6)用同样方法继续求算数平方根的其他各位数字。
2、小数部分开平方法:
求小数平方根,也可以用整数开平方的一般方法来计算,但是在用撇号分段的时候有所不同,分段时要从小数点向右每隔2段用撇号分开,如果小数点后的最后一段只有一位,就填上一个0补成2位,然后用整数部分开平方的步骤计算。
全部回答
  • 1楼网友:雾月
  • 2021-03-21 19:48
.一般手工方法——中国传统手工开方法 很类似除法,以求200的开平方为例。 1 4. 1 4 2……{以小数点为界,每隔2位写一位得数, 注意加小数点 √2`00. | | | {以小数点为界,每隔2位做一个标记(其实做不做没所谓)} 1 1 | | |{算出不大于最右一组数的开方最大整数,写在左上方,即int(sqrt(最右一组数)),并把这个整数的平方写下1} 100 | | | {计算它们的差, 在右边添两个零} 24 96 | | |{将刚才求得一位数乘以20(1*20),然后,算出不大于差的x(20+x)的x的最大整数4} 4 00 | | {计算它们的差, 在右边添两个零} 281 2 81 | | {将求得的数乘以20(即14*20)然后,算出不大于差的x(280+x),的x的最大整数1} 11900 | {计算它们的差, 在右边添两个零} 2824 11296 | {同上, 算出不大于差的x(141*20+x),的x的最大整数 4} 60400 28282 56564 3826
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯