2012-02-18 200 views
4

我在C語言中提交一個矩陣求冪代碼來找到第n個斐波那契,我使用長long int變量來存儲第n個斐波那契的模數10000007,並且判斷給出了「超出時間限制」但是當我使用「unsigned long long int」時,我的代碼在時間內被接受並且執行時間減少了。unsigned long long int

我無法理解爲什麼long long int給出了「超出時間限制」並且「unsigned long long int」被接受了?

+0

而且您完全有信心法官機器上的架構與您的機器相同? – 2012-02-18 05:16:59

+9

http://stackoverflow.com/questions/4712315/performance-of-nsigned-vs-signed-integers – 2012-02-18 05:18:04

+0

你在用什麼架構? – jmq 2012-02-18 05:19:01

回答

5

爲了不復制任何人的努力,請參閱this question(答案極端測試例,在這兩種情況下,未來正確的),這more advanced question and answers同一主題的。 dthorpe的回答在this one中也非常詳細。 wheaties'第一條評論here值得作爲第一次審判。

+0

當我們使用unsigned與雙精度混合時會有開銷,但是我的代碼處理乘法運算,「unsigned int」比「int」運算速度快,是的,現在我也可以通過比較兩種彙編代碼來檢查乘法乘法...... :) – 2012-02-18 09:28:48