128位二进制数如何开平方 在线等急急急!!!求大神赐教

请教大神如何在C语言中或System verilog中实现128位二进制数求开方值,在线等急!!!

4个回答

128>>1 开一次方 128>>2 二次方·······

大概说一下我的思路。
如果这个是完全平方数:
1.把这个数转换成十进制数;(这一步也可能是多余,不过是因为后面计算方便而已)
2.求出这个数的所有质数因子以及对应的个数;
3.所有质因子个数除以二,然后乘法运算就可以得到开方后的数了;
4.这中间的部分运算可能需要字符串的四则运算,具体可以百度到,很多字符串大数四则运算代码。
如果这个书不是完全平方数,那么最简单的方法就是用大数乘法进行反向计算;
也就是从1开始算平方,结果小于你给的数字,就乘以二(因为数太大,乘以二可能很快就能到正确结果附近),如果比你给的数大,那么除以二以后加1求平方,
然后再试加2的平方,再试加4的平方,这个思路不晓得说的够不够清楚,反正就是一种快速逼近最佳答案的方式

楼上答案坑爹,>>2表示右移2位也就是除以4并不是求开方的。如果想写个代码的话,还是建议先转成10进制再算开方,再转成2进制。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!