2015-01-02 39 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

相关问题