num이라고 하면 숫자가 주어지고 작업은 숫자에 1을 더할 때 변경된 총 비트 수를 계산하는 것입니다.
숫자의 이진 표현은 주어진 숫자를 0과 1의 형태로 변환하여 수행되며 다양한 방법으로 수행됩니다. 한 가지 방법으로 주어진 숫자의 LCM을 2로 계산하고 알림이 0이 아닌 경우 비트가 1로 설정되고 그렇지 않으면 0으로 설정됩니다.
비트 추가 테이블은
0 + 1 = 1 1 + 0 = 1 0 + 0 = 0 1 + 1 = 1 ( 1 bit carry)
예
Input − num = 10 Output − count is : 1
설명 - 10의 이진 표현은 1010이고 1이 추가되면 표현은 1011이 됩니다. 분명히 한 비트만 변경되었으므로 카운트는 1입니다.
Input − num = 5 Output − count is : 2
설명 - 5의 이진 표현은 101이고 1이 추가되면 표현은 110이 됩니다. 분명히 2비트가 변경되었으므로 카운트는 2입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
정수 유형의 수를 입력합니다. int num
-
카운트를 저장할 변수를 선언합니다. int count
-
num의 XOR을 계산하고 n ^ (n + 1)
로 설정하는 다른 변수를 temp라고 합시다. -
count 변수에서 __builtin_popcount(temp)를 호출합니다. 이 함수는 주어진 정수 이진 표현에서 숫자의 개수를 계산하는 것입니다. GCC 컴파일러의 내장 기능입니다.
-
개수 반환
-
결과를 인쇄하십시오.
예시
#include <iostream> using namespace std; // Function to find number of changed bit int changedbit(int n){ int XOR = n ^ (n + 1); // Count set bits in xor value int count = __builtin_popcount(XOR); return count; } int main(){ int n = 10; cout <<"count is: " <<changedbit(n); return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -
count is: 1