나는 많은 코드를 실행하여 최적화하고 싶다. 그것은 다음과 같습니다빠른 양방향 비트 시프트?
int exponent;
uint32_t mantissa;
if (exponent < 0) {
return mantissa << -exponent;
} else {
return mantissa >> exponent;
}
그것이 오른쪽 시프트 exponent
는 음수가 될 수 mantissa
exponent
에 의해 장소,해야, 목적은 매우 분명하다입니다.
(가능하면 가지가없는) 더 빠르게 코드를 작성할 수 있습니까?
'mantissa'는 여기 23 비트 정수이고 지수는 [-127, +128] 범위의 다른 흥미로운 정보가있을 수 있습니다. (예, IEEE 754 :). – orlp
+1 : 영리합니다. 가장 큰 네이티브 형식도 64 비트 길이 인 컴퓨터에서 mantissa가 더 큰 (64 비트) 비슷한 트릭이 없다고 가정합니다. –