為什麼計算機算一條除法指令的耗時低於移位運算的耗時?

時間 2021-06-02 21:25:19

1樓:

這樣測試指令耗時要排除的問題很多,編譯器優化、獲取時間的精度、執行緒切換等等都是要排除的問題。

正確的方法是直接在CPU的文件和資料裡找,例如Intel的可以看《Intel 64 and IA-32 Architectures Software Developer's Manual》或者用下面的鏈結。

Intrinsics Guide

分享、反對、舉報三連。

2樓:月神覺醒

C語言不要和組合語言混淆好吧。你這倆DEMO的效率完全取決於你的編譯器效率。

順帶後面沒有對n的操作,開優化等級高的話編譯器這個for迴圈都是省略的吧。

感興趣的話建議用嵌入彙編寫,全部優化關掉進行對比。

另外按計算機系統結構的理解,位移比除法快在是指令週期少吧...除法要去定址除數和被除數,位移只需要定址被除數即可。

但是你用的電腦的處理器說不定有優化,畢竟不是乙個核,要是並行做得好說不定效能也沒啥差別。。。總之感覺這實驗沒啥意義。

另:畢業好些年了,不做底層硬體開發,有說的不對的地方見諒。

如果用一條指令實現計算機的所有功能,那麼是那哪條?又為什麼呢?

lowxiong 其實計算機的所有功能概括來講就是 接受輸入 內部處理 得到輸出,所以從面上講,你給計算機任何指令,都實現了計算機的所有功能。好多答主侷限在cpu的功能實現上,cpu的主要作用是運算和資料轉移以及條件跳轉,因此我覺得在8086指令loop好像實現了所有功能 既有間址定址運算,又有資料...

怎麼理解從一條「0,1」紙帶到今天的計算機?

羅瀟 推薦一本書,編碼隱匿在計算機軟硬體背後的語言 科普性質但並不淺薄,挺有趣的。簡單的說兩個最重要的部分,一是表達資料。資料,涉及到編碼,utf8,ansi,gbk之類。舉個例子,摩斯碼,用長按短按來表達不同的字元。這樣,只要物理儲存裝置做出來,就可以儲存資訊了。姑且把儲存位置叫做記憶體,我們講記...

為什麼計算機的機器指令能保證資料被輸入?

默然說話 哦,你似乎錯誤地理解了 執行 的含義。計算機是臺機器,由硬體組成,這些硬體是按照邏輯門設計的,所謂邏輯門,就是非常多的開關,通電之後,電流就在裡面不停的流動,我們所謂的 程式 呀,資料 呀,對計算機來說不過是幾千幾萬幾億個開關的開啟與關閉。資料 不存在的,小夥子,你想多了。所以,計算機給你...