2015-01-02 65 views
0

我有號碼,說1234,我想從數目的最後兩個數字,即34如何以有效的方式獲取數字的最後兩位數字?

目前我使用%100%10操作這樣做。 有沒有其他有效的方法來做到這一點?

+0

根據架構,答案可能是肯定的。不過,我更願意閱讀「%10」,而不是瘋狂的移動運營商所要求的。參見[Hacker's Delight](http://www.hackersdelight.org/divcMore.pdf)。 – Phylogenesis

+5

當您擺弄數字時,您會在其他地方使用其他運行時間懲罰。相信你的編譯器的優化,並使用'%10',除非你有證據證明它會受到傷害。 – harper

+2

請發佈一個可運行的樣本。如果你有性能問題,我不會以原始類型的%作爲我的嫌疑人。 – Persixty

回答

1

,如果這是你想要的最後兩個字符的字符串,

否則,如果它; S整數上,這樣做%100首先存儲在int結果,然後做%10大約是有效的,因爲它得到。 (short可能工作比int這裏,可能不會)

整數存儲爲二進制數和CPU不能僅僅通過看號看的最後基地的10位「 ,它所要做的餘計算來獲得。

+0

爲什麼'短'工作更好?很可能,它不會。在x86上,它會生成代碼,執行速度比用'int'慢。一般來說,除非有非常好的理由不使用'int',否則不要。 – IInspectable

+0

分部是艱難的,狹窄的分歧更快 - 80386似乎需要11 +寬度時鐘https://pdos.csail.mit.edu/6.828/2006/readings/i386/IDIV.htm – Jasen

+0

因此,它可能更快,寫作時16位代碼。但是,在32位代碼中,這需要使用「66h」操作數大小前綴,這會導致主要的性能下降。再說一遍,除非有一個令人信服的理由不使用'int',否則繼續使用它。 – IInspectable

相關問題