>백엔드 개발 >C++ >숫자는 2의 힘입니까? 이것을 어떻게 효율적으로 결정할 수 있습니까?

숫자는 2의 힘입니까? 이것을 어떻게 효율적으로 결정할 수 있습니까?

DDD
DDD원래의
2025-01-29 19:26:12761검색

숫자 수가 2인지 여부 질문 진술 컴퓨터 과학에서 일반적인 문제는 주어진 숫자가 2의 힘인지 여부를 결정하는 것입니다. 이 문제는 특히 적용된 알고리즘 분석에 있습니다. 이 알고리즘에는 다음과 같은 특성이 있어야합니다 Is a Number a Power of 2?  How Can We Efficiently Determine This?
코드는 간단하고 명확합니다.

는 서명되지 않은 긴 정수 값을 정확하게 처리 할 수 ​​있습니다.

메소드 메소드 1 : 시프트 전력의 방법 이 문제를 해결하는 방법은 2 연속 전력을 반복하고 전원 -in-이 입력 번호와 일치하는지 확인하는 것입니다. 이것은 다음과 같이 구현 될 수 있습니다 :

메소드 2 : 계산 알고리즘 수

다른 방법은 쌍 수의 사용 계산과 관련이 있습니다. 그러나 플로팅 -포인트 계산은 정확도를 유발할 수 있으므로주의해야합니다. 다음 코드를 고려하십시오

최적의 솔루션 : 비트 컴퓨팅 방법
    보다 효과적인 솔루션은 비트 작업을 사용하는 것입니다. 2의 힘은 고유 한 특성을 갖습니다. (x -1)이 수행되고 작동 (&)이 수행되면 결과 값은 항상 0입니다. 이 속성은 다음과 같이 표현 될 수 있습니다
  1. 제로의 전력 후보를 2로 2로 제거하기 위해 약간 수정할 수 있습니다 :
  2. 설명 위치와 작동 (&)에 따라 x와 (x -1)의 이진 표현의 각 비트의 위치를 ​​확인하십시오. 둘 다 1 인 경우 결과는 1이면, 0.2의 결과는 1로 설정됩니다. 따라서 2의 전력은 (x -1) 위치와 계산 결과가 0 인 0입니다.
  3. 이 방법은 숫자가 2인지 여부를 결정하기위한 효율적이고 직접적인 솔루션을 제공합니다.

위 내용은 숫자는 2의 힘입니까? 이것을 어떻게 효율적으로 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.