作者Gwaewluin (神無月 孝臣)
看板C_Chat
標題Re: [閒聊] 現實世界有哪些原理不明的科技
時間Thu Dec 10 18:24:28 2020
※ 引述《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這個魔術數字到底是怎麼出現的依然是無法得知
--
On the surface, an artist tries to frame his ideals in an image, to challenge
his audience and make his vision immortal. But the parasites say "NO! Your
art must serve the cause! Your ideals endanger the people!"
─Andrew Ryan
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 113.89.35.80 (中國)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1607595870.A.CE1.html
推 astrayzip: 這個數謎題就是找不到誰寫的 12/10 18:25
→ astrayzip: 不然就能問怎麼找的了 12/10 18:25
推 mayolane: 先推假裝我看得懂 12/10 18:26
→ shintz: 最近看到有小說提到這魔術數字,還挺有趣的 12/10 18:28
→ gcobc12632: 第一篇文章的推文就有講到這例子 看完之後只覺得傳奇 12/10 18:28
→ haoboo: 你找到作者可能也只是try出來的 12/10 18:28
→ shintz: 沒人知道怎麼來的,反正用就對了 12/10 18:28
推 jojojen: 未來人用箝型攻勢加進程式碼的吧 12/10 18:30
→ a1919979: 個人猜測 也是暴力挖吧 只是算平方根倒數的數值分析 就 12/10 18:30
→ a1919979: 算是20年前找一台空閒電腦 跑個一兩個月也是有辦法的 12/10 18:30
→ zseineo: 這是開發雷神之槌3的時候冒出來的東西,所以很神奇 12/10 18:35
→ haoboo: 很多code裡面莫名其妙的sleep()也是不知道數值怎麼來的 12/10 18:36
→ haoboo: 為什麼要睡這麼久?天知道,總之睡就對了 12/10 18:36
→ M4Tank: 淦 講中文 12/10 18:38
推 greatloser: 魔術數字的前一行也看不太懂啊.... 12/10 18:38
推 MoneyBlue: 蠻多計算的優化也都有類似的東西 12/10 18:43
→ bluejark: 你們有聽過嗎 電腦是人類跟外星人換來的科技 12/10 18:51
推 GTR12534: 前一行是整數化 可以看維基百科 12/11 21:54