我有以下问题:为什么JDK使用移位而不是乘/除?
如果询问是否使用移位与乘法或除法,例如答案是,让JVM优化。
实施例这里:is-shifting-bits-faster-than-multiplying
现在我一直在寻找在JDK源,例如Priority Queue和代码仅使用移位了对乘法和除法(符号和无符号)。
理所当然地认为SO中的帖子是有效的答案,我想知道为什么在jdk中他们更喜欢通过转换来实现它?
它是否与性能无关的一些微妙细节?我怀疑它必须与上溢/下溢乘法和除法有关,但我不确定。
任何人有想法?使用转移处理更巧妙的溢出问题?或者这只是一个品味问题?
所以不可能写无bug的代码没有移位运算符微妙像这样的问题? – Cratylus 2012-02-12 09:45:29
@ user384706当然你可以:一个简单的三元操作符在这里和那里可以帮助你做到这一点。但是,效率会受到影响。 – dasblinkenlight 2012-02-12 09:49:41
是否有可能展示一个这样的例子?我有兴趣了解 – Cratylus 2012-02-12 10:04:16