当使用IEEE754浮点数时,我发现了两种方法来清零32位变量的前9位。他们中的任何一个都比另一个好吗?位掩码vs移位(+ java字节码)
Java相关的补充:有没有提供关于指令效率的信息的列表?我已经随机发现BIPUSH通常应该比LDC更快,但没有其他任何东西。
// 10111111110010100011110101110001 bits
// 00000000010010100011110101110001 significand
int bits = 0b10111111110010100011110101110001;
int significand = bits & 0b11111111111111111111111;
int significand2 = bits <<9>>> 9;
字节码...
L4
LINENUMBER 49 L4
ILOAD 0
LDC 8388607 // = 0b11111111111111111111111
IAND
ISTORE 5
L5
LINENUMBER 50 L5
ILOAD 0
BIPUSH 9
ISHL
BIPUSH 9
IUSHR
ISTORE 6
感谢。 :)
简单的整数算术运算在现代处理器上成为一个重要的性能问题是非常罕见的。有条件的分支和缓存未命中更有可能重要。 –