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

C++에서 정수의 세트 비트 수 계산

<시간/>

num이라는 정수가 주어지고 작업은 먼저 숫자의 2진수를 계산한 다음 숫자의 총 세트 비트를 계산하는 것입니다.

이진수의 세트 비트는 1로 표시됩니다. 정수 값의 이진수를 계산할 때마다 0과 1의 조합으로 구성됩니다. 따라서 컴퓨터 용어로 1자리를 set bit라고 합니다.

입력 - 정수 =50

출력 − 숫자의 총 설정 비트 수는 − 3입니다.

설명 − 숫자 50의 이진 표현은 110010이고 8자리 숫자로 계산하면 처음에 두 개의 0이 추가됩니다. 따라서 숫자의 총 세트 비트는 3입니다.

입력 - 정수 =10

출력 − 숫자의 총 설정 비트 수는 − 2

입니다.

설명 − 숫자 10의 이진 표현은 00001010이고 8자리 숫자로 계산하면 처음에 4개의 0이 추가됩니다. 따라서 숫자의 총 설정 비트는 2입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수형 변수에 숫자 입력

  • unsigned int

    유형의 세트 비트의 총 개수를 저장하기 위해 변수 개수를 선언합니다.

  • 시작 루프 FOR i에서 1<<7 및 i> 0 및 i에서 i / 2

  • 루프 내에서 num &1 ==TRUE를 확인한 다음 1을 인쇄하고 그렇지 않으면 0을 인쇄합니다.

  • 숫자가 0이 아닐 때까지 총 비트 수를 계산하는 동안 루프 시작

  • 루프 내에서 count =count + number &1로 설정하고 number>>=1

    도 설정합니다.
  • 카운트 인쇄

예시

#include<iostream>
using namespace std;
//Count total set bits in a number
unsigned int bits(unsigned int number){
   unsigned int count = 0;
   unsigned i;
   //display the total 8-bit number
   cout<<"8-bit digits of "<<number<<" is: ";
   for (i = 1 << 7; i > 0; i = i / 2){
      (number & i)? cout<<"1": cout<<"0";
   }
   //calculate the total set bits in a number
   while (number){
      count += number & 1;
      number >>= 1;
   }
   cout<<"\nCount of total set bits in a number are: "<<count;
}
int main(){
   int number = 50;
   bits(number);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -

8-bit digits of 50 is: 00110010
Count of total set bits in a number are: 3