當使用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
感謝。 :)
簡單的整數算術運算在現代處理器上成爲一個重要的性能問題是非常罕見的。有條件的分支和緩存未命中更有可能重要。 –