是否有一些比特明智的操作很酷的算法?電腦如何找到模數?
5
A
回答
5
通常,在處理器上的模數和除法操作是相同的東西。例如,請參閱http://jsimlo.sk/docs/cpu/index.php/div.html。這是在英特爾處理器上執行除法指令。
4
在大多數情況下,彈性模量是剛通過將兩個數字進行計算。商被存儲在一個寄存器中,其餘的被存儲在另一個寄存器中。你會追趕剩下的。
2
在x mod Y = X - Y *(X/Y)
其中(x/y)爲一個整數除法。
1
除了明顯的方法,使用DIV
和IDIV
如上所述(用於x86)中,由二的冪modulo'd任意數量的結果可以通過採取按位來計算和:x mod y
其中Y是POW2是與x AND (y - 1)
相同。大多數編譯器執行該時可能的,因爲除法遠遠超過按位OPS
3
如果除數是事先已知的(例如,對於由C編譯器產生的代碼,這是在編譯時已知的常數),則整數除法(昂貴從中可以容易地獲得模量)有時可以通過乘法和移位來實現。有關詳細信息,請參閱this article(警告:這不是光讀數)。
在許多處理器,整數乘法是遠遠大於整數除法快;某些處理器甚至沒有一個整數除法操作碼(乘法上Ñ比特值可以被優化成深度的電路O(log n)的,而沒有已知的方法來優化的深度以下除法電路O(n))。
相關問題
- 1. 如何找到android平板電腦支持電話或不是?
- 2. 找出哪臺電腦遠程連接到另一臺電腦
- 3. 如何檢測平板電腦模式
- 4. jGroups沒有找到其他電腦
- 5. 無法找到Tango平板電腦
- 6. 如何找到我的電腦上的Java堆大小?
- 7. 如何找到筆記本電腦的mac地址
- 8. 如何找到Yzi平板電腦的USB驅動程序?
- 9. 如何知道TabletPC是在'筆記本電腦'或'平板電腦'模式
- 10. 如何在我的電腦上找到我的SQLite數據庫文件?
- 11. 如何在我的電腦上找到Microsoft Management Studio中創建的數據庫?
- 12. 如何在平板電腦
- 13. 如何使電腦唱歌
- 14. 如何獲取電腦ID?
- 15. 如何從我的電腦
- 16. 如何將命令從電腦發送到CentOS中的另一臺電腦?
- 17. 如何將文件從一臺電腦複製到另一臺電腦
- 18. 網絡藍牙無法在電腦上找到任何東西
- 19. 我發送我的電腦到我的電腦到另一臺電腦,反之亦然,但不能收到
- 20. 如何從Android設備發送數據到我的電腦
- 21. 如何將其他電腦連接到數據庫
- 22. 如何將Android電視盒連接到我的電腦?
- 23. 我找不到連接到我電腦的htc android設備。
- 24. 連接電腦到手機
- 25. 使用bluecove通過藍牙將電腦連接到電腦
- 26. VOIP:電腦到電腦的通話和會議
- 27. 尋找覆盆子pi的三維電腦模型
- 28. 無法加載程序集。找不到模塊。沒有VisualStudio的電腦
- 29. 如何在ROS中查找電腦的當前日期?
- 30. 查找電腦的地理位置python
是,你注意到組裝這聽起來像你想在一個非常低的水平,知道這一點,而不是「從X,直到結果小於y反覆。減去Y」正確的東西像'X MOD y'?提醒我在彙編課程中編寫mul/div例程,並驚訝他們需要多長時間才能成功 – 2011-03-28 04:09:51
正確,我想知道是否有一些聰明的低級別方式,它比O(n)時間要好。 – Nate 2011-03-28 04:13:33
我不確定硬件的功能,但是在大多數指令集中,「模數」和「分頻」都是使用相同的指令完成的。分頻指令被實現爲使得商將被輸出到一個寄存器並且其餘的被同時輸出到第二寄存器。 – aroth 2011-03-28 04:14:41