第五百四十八章 技术宅(2 / 4)

超脑黑客 疯狂小强 4044 字 15天前

平方根在数学中是一个非常重要同时也非常复杂的运算,在计算机中实现这种函数通常比较困难,所以编程语言一般都会对这些函数进行封装,程序员在编程的时候,如果涉及到平方根运算,直接调用函数库中的函数就行了。很少有人会懂得底层到底是如何实现的。

而且,能够实现是一方面,能不能做到运算效率高效又是另外一方面。

程序的运行效率,往往就是高手和菜鸟之间的重要区别,真正的黑客,编程的时候。不仅仅只是将功能实现,还会追求最高效率,有时候可能只是一个符号的变化,其执行效率便天差地别。

执行一次的区别可能看不出来,可是如果循环一千次,一万次呢?

高手和菜鸟编写的程序,在效率上往往有着很多倍的差距,要想编写出高效优雅的程序,必须有着对编程语言和计算机底层的本质理解。同时还得拥有丰富的编程经验,在这方面可做不得假,实践是唯一提高自身实力的方式。

林鸿知道,求平方根的运算,有一个算法叫做牛顿迭代法,其原理为:

如果一个数为x,假设它的平方根为y,

如果y的平方和x相差大于某个给定的误差,就继续假设下一个值,如此持续下去,直到最终得到在允许误差内的值。

至于如何假设这个值。使用的方式便是取平均值。其中必须多次用到除法和乘法。

在计算机中,其本质其实就是加法。整个cpu的运算其实就是一个加法器,当初林鸿实现超脑cpu结构的时候,就是基于一个加法器结构,至于后面的减法、乘法以及除法等运算,都是对在这个加法器的基础上衍伸而来。

直接使用牛顿迭代法来求平方根,这是普通人的做法,林鸿不用想都知道,如果真的按照这种方式来实现,显然不能过关。

林鸿略微一思索便有了头绪,他查看了一下电脑中的编译器,发现这台电脑里面准备得非常充分,不但有市面上常见的一些编程语言编译器,如c、

aisc、java、c++等语言,甚至还有一些非常小众的编程语言,如ada、

lue、lisp等等。

最终,林鸿还是调出了电脑中的c语言编译器,直接敲起代码来。

霹雳啪啦,仅仅过了二十来秒之后,林鸿便完成了函数的编写。

他调用用函数执行了一下,程序成功运行,没有任何地错误,一次通过。

举报本章错误( 无需登录 )