有沒有一種快速的方法來查找是否32位整數是4的倍數而不使用%運算符(在C++中)?快速找到4的倍數
快速找到4的倍數
回答
是的,有。
((i & 3) == 0)
請注意,這可能不會更快。另外一個好的優化編譯器會將你的模數與常數4轉換爲最快的操作,所以它可以自動產生這個。
如果您有興趣,請檢查生成的代碼。
+1「檢查生成的代碼」 – 2012-07-11 15:49:10
它實際上並沒有保證能夠用C++標準工作,儘管只是出於一個不太可能的原因,即C++實現允許使用1s的負整數表示形式。 – 2012-07-11 16:14:37
我在GCC 4.6.3上測試過,並且生成了相同的代碼。編譯器足夠聰明,可以知道一個2的冪的恆模與一個小於該平臺模數的按位AND相同。 (有趣的是,x86_64上的'andl'和x86_32上的'testb'。 – 2012-07-11 20:42:39
- 1. 快速找到一個數字的下一個倍數
- 2. 快速shell找到
- 3. 快速找到整數的整數
- 4. 快速找到不愉快的號碼
- 5. 快速找不到模塊
- 6. 快速:找不到模塊?
- 7. 擴展序列的快速倍增法
- 8. 在4倍速運行的JavaScript時鐘
- 9. 快速查找
- 10. 快速查找
- 11. 難以快速升級到4.x
- 12. 快速計算以獲得不同級別的數字倍數
- 13. 找到最低公倍數
- 14. 在Java中找到倍數
- 15. 找得到的對象快速CSV
- 16. 快速找到webcontrols的最佳方式
- 17. 方法找到2^x的快速
- 18. 快速洗牌數字1到4的方法?
- 19. 快速查找Java
- 20. 如何在大整數列表中快速找到列表元素的第一個倍數?
- 21. 尋找素數的快速算法?
- 22. SWT的「快速查找」表
- 23. 「快速查找」的意見?
- 24. 尋找倍數
- 25. 正則表達式從給定的一組數中找到4的倍數?
- 26. 快速XML到數據庫
- 27. 快速地找到對象在JavaScript
- 28. 快速NodeJS找不到模塊'html'
- 29. 快速找到由總財產
- 30. UIView。如何快速找到Root SuperView?
如果你想C++解決方案,你爲什麼要標記C? – Jack 2012-07-11 15:48:08
爲什麼不使用'%'運算符?當你有一個專門用於準備工作的工具時,你必須想知道什麼時候有人特意堅持不使用它。 – 2012-07-11 15:59:32
我認爲%運算符會很慢,因爲它使用了鴻溝(我認爲?) – 2012-07-11 16:18:47