※ 引述《mayolane (沒有人啦)》之銘言:
: 科幻作品常常出現一些劇中人物也不明白原理的科技
: 例如鋼彈UC紀元裡面的精神感應框架還有其他NT相關科技
: 那我看過不少人抓著這種東西在罵這些作品亂設定
: 覺得科技都是原理完全明白才了才會拿來用的
: 大概是這些人對現實世界的科技不是太了解
: 舉個現實的例子
: 質譜是利用離子的荷質比不同分離各種離子
: 去分析有沒有這個荷質比的離子的方式
: 所以樣品要先想辦法離子化
: 其中一種很廣泛使用的離子化方法叫做MALDI
: 簡單來說就是樣品跟matrix混在一起用雷射打樣品就會離子化了
: 而且沒有matrix單純用雷射還不會離子化
: 這東西中間的機制現在還是沒有定論但是化學家還是用得爽爽的
: 更不用說有機合成有一堆反應也是機制不明
: 以上這些例子都很偏化學
: 有沒有其他這種原理未知的科技的例子呢
如果是程式設計領域中也是有個例子可以提一下
有一個東西大家都在用但是到現在也不知道是怎麼來的
請先看這一段程式碼
看不懂程式碼沒關係
看程式碼旁邊的註解即可
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
(對邪惡浮點數的位元hack)
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration (第一次迭代)
這個是一段計算平方根的程式碼
平方根的求法主要是使用牛頓法去迭代來搜尋出一個解來
由於是需要迭代求解所以需要一個非常好的起點來進行搜尋
要能用愈少的迭代次數來搜尋就能讓運算的速度愈快
這一段程式碼則是一個可以快速將平方根的搜尋結果得來的流程
首先將要計算的浮點數轉換成一個用位元來儲存的整數
將著將儲存的位元資料平移一格再減去魔術數字0x5f3759df
這樣就能用非常快的速度來搜尋得到解
而且用這一段程式碼來跑的話只需要跌代一次就能得到十分精確的解
這一整套流程的使用原理大家都知道
而且也已經發展非常多年了(好像在2000年前就有了)
但問題就是那個魔術數字0x5f3759df到底是怎麼得到的(所以被稱為魔術數字)
以前看資料說曾有人研究用整個理論反推魔術數字該長什麼
得到的結果算出來也沒有比使用0x5f3759df來得準
現在雖然已經可以找到比0x5f3759df更精準的魔術數字(以及進行超過一次的迭代)
但完全是靠暴力法硬將魔術數字挖出來
0x5f3759df這個魔術數字在現代也是可以成功用暴力法硬挖出來的樣子
但二十年前的那個時代裡
0x5f3759df這個魔術數字到底是怎麼出現的依然是無法得知