IEEE754 부동 소수점을 사용할 때 32 비트 변수의 상위 9 비트를 0으로 만드는 두 가지 방법을 발견했습니다. 그들 중 어느 것이 다른 것보다 낫습니까?비트 마스킹 대 시프트 (+ 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
감사합니다. :)
간단한 정수 연산이 최신 프로세서에서 중요한 성능 문제가되는 경우는 매우 드뭅니다. 조건부 분기 및 캐시 누락이 훨씬 더 중요 할 수 있습니다. –