整数乘法(暂时忽略除法)之间的差额是否仍支持移位,如果有的话,该差额有多大?
即使您想要它,它似乎也是如此低级的优化,即使在大多数情况下,(C#/Java)字节码编译器或jit也不应该捕获它吗?
注意:我测试了C#的编译输出(使用gmcs Mono C#编译器版本2.6.7.0),并且即使乘以2的倍数,乘法示例也不使用shift进行乘法。
C#
http://csharp.pastebin.com/hcrRnPrb
纤丝
http://csharp.pastebin.com/0js9F2c1
P.S.
我忘记了在字节上使用它可能会有些有用,但是在将其用于Numbers时仍然遇到一些麻烦。
最佳答案
没错,如果仅将移位运算符用作乘法的替代项,则应将其留给编译器。
我想您忽略了以下应用程序:
而且,在不使用 native 代码的情况下,更需要位纠缠来有效实现。