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

C++에서 숫자의 설정되지 않은 비트 계산

<시간/>

예를 들어 num이라는 정수가 주어지고 작업은 먼저 숫자의 2진수를 계산한 다음 숫자의 설정되지 않은 전체 비트를 계산하는 것입니다.

이진수에서 설정되지 않은 비트는 0으로 표시됩니다. 정수 값의 이진수를 계산할 때마다 0과 1의 조합으로 구성됩니다. 따라서 숫자 0은 컴퓨터 용어로 설정되지 않은 비트로 알려져 있습니다.

입력 - 정수 =50

출력 − 숫자에서 설정되지 않은 총 비트 수는 − 3입니다.

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

입력 - 정수 =10

출력 − 숫자에서 설정되지 않은 총 비트 수는 다음과 같습니다. 6

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

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

  • 정수형 변수에 숫자 입력

  • 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 unset bits in a number
unsigned int unset_bits(unsigned int number){
   unsigned int total_digits = 0;
   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";
      total_digits++;
   }
   //calculate the total unset bits in a number
   while (number){
      count += number & 1;
      number >>= 1;
   }
   count = total_digits - count;
   cout<<"\nCount of total unset bits in a number are: "<<count;
}
int main(){
   int number = 50;
   unset_bits(number);
   return 0;
}

출력

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

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