今天一章,明天補上。


    周圍的每一寸空間似乎都堆放著各式各樣的電子設備和元器件,光線昏暗,擁擠不堪,林鴻覺得自己仿佛來到了大陸某個城市中城隍廟的電子市場。


    走了一段路程之後,他看到,和電腦有關的電子配件和元器件逐漸多了起來。


    前麵,一個前額劉海染成黃色的青年正在店鋪中玩著電腦遊戲。


    這個時候,走在前麵的黃越突然站住了,他轉頭對廣永元道:“按照老規矩。”


    說完,他便獨自一人先朝前麵走了。


    “老規矩?”林鴻用疑惑地眼神看了廣永元一眼。


    廣永元隻好解釋道:“要想進入這個圈子,必須證明自己的技術已經達到這個水平。雖然他們都認識我,但他們都是死腦筋,隻認技術不認人。”


    繞來繞去,林鴻總算明白,要想繼續向前走,他必須通過他們設置的考驗,頗有點闖關的意味。


    “有意思。”林鴻笑笑,對此並不在意,問道,“都有些什麽項目?”


    廣永元道:“編程、破解以及網絡滲透。當然,並不一定要全部過關,隻要其中一項能夠得到他們的認可就行了。你肯定是沒有問題的,隻是走個過場罷了。”


    廣永元已經見識過林鴻的破解技術,連《英雄無敵》這樣難啃的骨頭林鴻都三下五除二不費什麽力氣就搞定了,更何況是他們的入門考驗?


    這個時候,之前正在玩遊戲的染發青年已經退出遊戲,他一甩額頭的黃發對林鴻道:“請吧。”


    第一道關卡,編程。


    林鴻也沒有什麽廢話,坐到了剛剛青年的座位,他看到,顯示器中已經出現了一道題目很顯然,他們對於這種事情已經非常熟悉,擁有了自己一套固定的考驗流程。


    給林鴻出的題目為“使用基本運算來編寫一個你所可能實現的效率最高的平方根函數”。


    平方根在數學中是一個非常重要同時也非常複雜的運算,在計算機中實現這種函數通常比較困難,所以編程語言一般都會對這些函數進行封裝,程序員在編程的時候,如果涉及到平方根運算,直接調用函數庫中的函數就行了很少有人會懂得底層到底是如何實現的。


    而且,能夠實現是一方麵,能不能做到運算效率高效又是另外一方麵。


    程序的運行效率,往往就是高手和菜鳥之間的重要區別,真正的黑客,編程的時候,不僅僅隻是將功能實現,還會追求最高效率有時候可能隻是一個符號的變化,其執行效率便天差地別。


    執行一次的區別可能看不出來,可是如果循環一千次,一萬次呢?


    高手和菜鳥編寫的程序,在效率上往往有著很多倍的差距,要想編寫出高效優雅的程序必須有著對編程語言和計算機底層的本質理解,同時還得擁有豐富的編程經驗,在這方麵可做不得假實踐是唯一提高自身實力的方式。


    林鴻知道,求平方根的運算,有一個算法叫做牛頓迭代法,其原理為:如果一個數為x,假設它的平方根為y如果y的平方和x相差大於某個給定的誤差′就繼續假設下一個值,如此持續下去直到最終得到在允許誤差內的值。


    至於如何假設這個值,使用的方式便是取平均值其中必須多次用到除法和乘法。


    在計算機中,其本質其實就是加法,整個cpu的運算其實就是一個加法器,當初林鴻實現超腦cpu結構的時候,就是基於一個加法器結構,至於後麵的減法、乘法以及除法等運算,都是對在這個加法器的基礎上衍伸而來。


    直接使用牛頓迭代法來求平方根,這是普通人的做法,林鴻不用想都知道,如果真的按照這種方式來實現,顯然不能過關。


    林鴻略微一思索便有了頭緒,他查看了一下電腦中的編譯器,發現這台電腦裏麵準備得非常充分,不但有市麵上常見的一些編程語言編譯器,如c、baisc、j**a、c++等語言,甚至還有一些非常小眾的編程語言,如ada、blue、isp等等。


    最終,林鴻還是調出了電腦中的c語言編譯器,直接敲起代碼來。


    霹靂啪啦,僅僅過了二十來秒之後,林鴻便完成了函數的編寫。


    他調用用函數執行了一下,程序成功運行,沒有任何地錯誤,一次通過。


    想了想,他再次刪掉了兩行,將兩個步驟合並成了一個,最終的函數代碼總數正好為十行。


    “好了。”林鴻道。


    站在他身後的廣永元此刻還在皺著眉頭看著他的程序。


    他想不通,林鴻為什麽這麽編寫。


    “這麽快就好了?”染發青年有些詫異。


    剛剛他讓出座位的時候,便從一個角落拿出了一個掌上遊戲機玩了起來,可是剛剛才開始玩,便聽到林鴻說已經ok。


    這在眾多挑戰者當中,還是頭一回。


    染發青年俯身過去看了一眼,臉上微微一愣,林鴻寫的這十行代碼,雖然他能看懂大部分,但是還有幾個細節他一時之間也沒弄懂。


    他順手將林鴻的這個函數加入時間統計宏,執行一萬次之後,最終顯示出了時間,965毫秒,也就是說,不到一秒鍾。


    他用敬服的眼神看著林鴻,說道:“你過關了。我在這裏呆了兩年了,兩年來,從這裏走過的人不下五十人,可是從來沒有一個人做到你這一步,不但結果保證精度,並且執行一萬次的時間不超過一秒。”


    林鴻笑笑,對於他的誇讚並沒有什麽可得意的,這些都是最基礎的東西,隻要理解了cpu的運作,多想一想基本上應該都能達到的,沒有好得意的。


    廣永元這個時候出言問道:“阿鴻,我看得不是很懂,求平方根不是使用二分查找法麽?”


    廣永元最擅長的並不是這個方麵,他畢竟是野路子出身,基礎部分還不是很紮實,林鴻的這十行代碼,他竟然看得滿頭霧水。


    他口中所說的二分查找,其實就是牛隊迭代法的實現方式之一。


    林鴻點點頭:“算法的確是這個,不過在這裏,我使用二進製的移位代替了乘除。你看……”


    林鴻見他聽得不是很懂,於是便重新調出編譯器,下斷點,跟蹤變量的內存賦值,一邊操作一邊解釋:“在二進製層麵上,從前向後決定每一個二進製位上是0還是1,因此,我們可以從最高位向最低位,依次上1,看乘積結果是否大於目標數,如果大於目標數了,那一位就保留0這樣的情況下,我們上1就不用真的去計算乘法,而是將之前的結果,加上上1以前的數左移1所在位置那麽多位的兩倍,再加上上1的位置左移上1的位置……”


    經過林鴻演示加解說,廣永元這才恍然大悟,後麵的青年也釋然的點點頭,他雖然知道大致原理,可是在細節方麵還是有些地方沒有理解,聽了林鴻完整的解釋這才了然。


    也就是說,整個算法林鴻使用的都是二進製層麵的運算,想不快都難,或者說,沒有哪個程序可以比他的這個算法實現更快了。


    僅僅花了二十來秒的時間就搞定第一關,並且答案如此優秀,這可是之前從來沒有碰到過的。


    林鴻本來還想著見識一下後麵到底出什麽題目,不過黃越在看到林鴻的這個程序之後,便直接宣布林鴻過關了,沒有必要再繼續闖關。


    這個題目,實際上是黃越親自出的,他當初給了一個標準答案,也是二進製層麵的實現,可是兩者相比之下,還是有著相當大的差距。


    這雖然是最基礎的東西,但正是這些東西最是能看清楚一個人的水平。


    很顯然,林鴻在這方麵要比黃越更強,更別說,廣永元之前對他說,林鴻還是一個破解大師。


    最終,林鴻順利地進入了他們的大本營,也就是一個相當大的大廳,不過在那裏,擺了上十台各種品牌的電腦和服務器,看上去反而覺得有些擁擠。


    大廳之中,有不少人,都是年輕人,他們見來了新成員,有的鼓掌,有的吹口哨,表示歡迎,不過,也僅此而已,例行歡迎儀式過後,他們便再次將注意力放在了自己的電腦顯示器上。


    黃越給林鴻重點介紹了兩個人,一個叫袁樂邦,一個胖得連腰都彎不下的胖子,有著彌勒佛一樣的笑臉,擅長的領域正是遊戲破解,廣永元最想挖的人便是他。


    另外一個是阮飛舟,帶著厚厚的黑框眼鏡,他擅長的是硬件破解,在他的桌子上,擺滿了各種電子元器件和最新的遊戲機,包括sony的ps遊戲機和任天堂的gba和nds係列遊戲機。-


    在阮飛舟的身上,林鴻看到了顧偉的影子。


    他們這個地方,並不是公司,甚至連一個團隊都稱不上,隻是基於興趣聚集在一起,黃越為他們免費提供場所,而這裏是鴨寮街,任何電器和元器件都能很方便地在這裏找到。


    他們是一群為技術而癲狂的技術宅。

章節目錄

閱讀記錄

超腦黑客所有內容均來自互聯網,uu小說網隻為原作者瘋狂小強的小說進行宣傳。歡迎各位書友支持瘋狂小強並收藏超腦黑客最新章節