Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 N에 1을 더한 후 변경된 비트 수 계산

<시간/>

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