> 백엔드 개발 > C++ > 정수가 주어진 범위 내에 속하는지 확인하는 더 빠른 방법이 있습니까?

정수가 주어진 범위 내에 속하는지 확인하는 더 빠른 방법이 있습니까?

Barbara Streisand
풀어 주다: 2024-12-10 03:28:21
원래의
954명이 탐색했습니다.

Is There a Faster Way to Check if an Integer Falls Within a Given Range?

정수가 두 정수 사이에 있는지 확인하는 가장 빠른 방법(포함)

정수가 다른 두 정수 사이에 있는지 확인하는 것이 일반적입니다. 연산을 수행하며 전통적인 접근 방식에는 논리적 AND와 부등식을 사용하는 것이 포함됩니다. 비교:

x >= start && x <= end
로그인 후 복사

그러나 더 빠른 대안이 있습니까?

잠재적인 최적화 중 하나는 단일 비교/분기를 사용하는 것입니다. 이 접근 방식은 숫자와 하한 및 상한을 부호 없는 정수로 변환하고 그 차이를 비교하는 방식으로 작동합니다.

if ((unsigned)(number-lower) <= (upper-lower))
    in_range(number);
로그인 후 복사

이 방법이 작동하는 이유는 무엇인가요? 숫자가 하한보다 낮으면 차이는 음수가 됩니다. 숫자가 범위 내에 있으면 차이는 양수이며 상한과 하한의 차이보다 작거나 같습니다.

이 방법에는 여러 가지 장점이 있습니다.

  • 분기 지침(한 번만 비교하면 됨).
  • 향상된 분기 예측(숫자의 상대 위치에 관계없이 동일한 분기가 수행됨) range).
  • 상한과 하한의 차이를 미리 계산하여 성능을 향상합니다(시간 기여 최소화).

실제로는 숫자와 간격을 원점으로 변환하고 숫자가 [0, D](여기서 D = 상한 - 하한) 내에 있는지 테스트하면 이 효율적인 알고리즘의 기초가 제공됩니다. 하한 아래의 음수는 음수 값으로 변환되고, 상한 위의 숫자는 D보다 큰 값으로 변환됩니다.

위 내용은 정수가 주어진 범위 내에 속하는지 확인하는 더 빠른 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿