這是上週彈道計算之後,整個計算機所定下的首要改進方向。
主要是彈道計算這個東西,天生就跟浮點運算綁在一起,彈道計算每發迭代二十多次,程式裡一大半的程式碼都在進行浮點運算。
這種既要大範圍、又要高精度的活,定點數根本扛不住。
所謂定點,就是小數點的位置固定死,比如規定小數點後面留三位,那0.001就是最小單位,再小就沒法表示了。
而浮點,則是把一個數拆成尾數和指數兩部分,比如3.14×102,尾數管精度,指數管範圍,兩邊都不耽誤。
倉頡這套程式語言,畢竟只是第一版,當初設計的時候,只做了定點數運算的宏。
浮點運算雖然硬體能做,但語言層面沒有對應的指令,程式設計師寫程式的時候,還是得自己手搓。
打個比方,硬體就像一個會算賬的夥計,加減乘除都能幹。可倉頡給這個夥計的“口令簿”裡,只有整數的口令,沒有小數的口令。
你要讓他算3.14加2.71,就得先把3.14拆成314乘以10的負二次方,把2.71拆成271乘以10的負二次方,對齊指數,再加尾數,最後再規格化回去。
一套流程下來,光寫程式碼就得十幾行。
上週算彈道的時候,周明就是這麼幹的,不但寫起來費勁,還容易出錯。
現在要做的,就是在倉頡里加上浮點運算的宏,把對階、尾數運算、規格化這些步驟,全部封裝成一個宏。
這樣他們再寫程式的時候,彈道程式的程式碼量能砍掉一半以上,出錯的機率也會大大降低,只要寫一句“浮點加 A B C”,編譯器就會自動展開成那十幾行的硬體指令。
周明現在寫的,就是最後一個浮點除法的展開規則。
他的鉛筆在紙上走走停停,時不時停下來,對著倉頡的指令表翻一翻。
······
機房的另一頭,趙家駿正蹲在地上,對著一個剛焊好的小盒子傻樂。
他這種傻樂的狀態已經持續了一週了,可見特等功對他的鼓舞。
那個盒子不大,大約只有巴掌寬,外殼是鐵皮敲出來的,一頭接著紙帶盤,另一頭連著機櫃的輸入介面。
這就是改進其二的:光電讀孔機。
說起來它的原理並不複雜,紙帶從一排光源和光電管中間穿過,有孔的地方,光透過去照在光電管上,就會輸出一個電訊號,而沒孔的地方,光被擋住,就沒有訊號。
原理簡單,做起來卻有講究。
最大的難點,是信噪比。
紙帶哪怕沒孔的地方,也會漫反射一點光過去,如果放大電路的增益調得不好,就會把這種微弱的漏光當成訊號,讀出來的字元自然便不準了。
還有紙帶的速度也會有影響......
趙家駿就在這上面卡了三天。
最後還是林遠給了一個三級放大加施密特整形的電路,才把問題解決的。
趙家駿安裝完畢後,伸手按下了啟動鍵開始自測。
。過穿速勻裡隙從帶紙,來起了轉聲一”啦嘩“盤帶紙
。GFEDCBA:元字試測行一是的出輸,了響地”嗒嗒“機表印,頭那櫃機
!碼錯有沒
。題問啥沒機孔讀電定確以可本基,後誤無認確完對核細仔,元字個百一卷每,帶紙捲三了跑又後隨駿家趙
”!了定搞邊這孔讀,授教華“:子嗓一了喊頭那櫃機衝,灰的上蓋膝拍了拍,起站才這他
......








