숫자 수가 2인지 여부
질문 진술
컴퓨터 과학에서 일반적인 문제는 주어진 숫자가 2의 힘인지 여부를 결정하는 것입니다. 이 문제는 특히 적용된 알고리즘 분석에 있습니다. 이 알고리즘에는 다음과 같은 특성이 있어야합니다
코드는 간단하고 명확합니다.
는 서명되지 않은 긴 정수 값을 정확하게 처리 할 수 있습니다.
메소드
메소드 1 : 시프트 전력의 방법
이 문제를 해결하는 방법은 2 연속 전력을 반복하고 전원 -in-이 입력 번호와 일치하는지 확인하는 것입니다. 이것은 다음과 같이 구현 될 수 있습니다 :
메소드 2 : 계산 알고리즘 수
다른 방법은 쌍 수의 사용 계산과 관련이 있습니다. 그러나 플로팅 -포인트 계산은 정확도를 유발할 수 있으므로주의해야합니다. 다음 코드를 고려하십시오
최적의 솔루션 : 비트 컴퓨팅 방법
보다 효과적인 솔루션은 비트 작업을 사용하는 것입니다. 2의 힘은 고유 한 특성을 갖습니다. (x -1)이 수행되고 작동 (&)이 수행되면 결과 값은 항상 0입니다. 이 속성은 다음과 같이 표현 될 수 있습니다
-
제로의 전력 후보를 2로 2로 제거하기 위해 약간 수정할 수 있습니다 :
-
설명
위치와 작동 (&)에 따라 x와 (x -1)의 이진 표현의 각 비트의 위치를 확인하십시오. 둘 다 1 인 경우 결과는 1이면, 0.2의 결과는 1로 설정됩니다. 따라서 2의 전력은 (x -1) 위치와 계산 결과가 0 인 0입니다.
이 방법은 숫자가 2인지 여부를 결정하기위한 효율적이고 직접적인 솔루션을 제공합니다.
위 내용은 숫자는 2의 힘입니까? 이것을 어떻게 효율적으로 결정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!