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

숫자의 패리티 검사


숫자의 패리티는 해당 숫자에 해당하는 이진수에 있는 1의 수를 기반으로 합니다. 현재 1의 개수가 홀수이면 홀수 패리티를 반환하고, 1이 짝수이면 짝수 패리티를 반환합니다.

컴퓨터 메모리의 숫자는 이진수로 저장되어 있으므로 쉽게 숫자를 이동할 수 있습니다. 이 경우 비트를 이동하여 주어진 숫자에 해당하는 2진수에 있는 1의 수를 계산합니다.

입력 및 출력

Input:
A number: 5
Binary equivalent is (101)
Output:
Parity of 5 is Odd.

알고리즘

finParity(n)

입력: 숫자 n.

출력: 번호에 짝수 패리티 또는 홀수 패리티가 있는지 확인하십시오.

Begin
   count := 0
   temp := n

   while temp >= 2, do
      if temp has 1 as LSb, then
         count := count + 1
      temp := right shift temp for 1 bit
   done

   if count is odd number, then
      display it is odd parity
   else
      display even parity
End

#include <iostream>
using namespace std;

bool findParity(int n) {
   int count = 0;
   int temp = n;

   while (temp>=2) {
      if(temp & 1)    //when LSb is 1, increase count
         count++;
      temp = temp >> 1;    //right shift number by 1 bit
   }      
   return (count % 2)?true:false;
}

int main() {
   int n;
   cout << "Enter a number: "; cin >>n;
   cout << "Parity of " << n << " is " << (findParity(n)?"Odd":"Even");
}

출력

Enter a number: 5
Parity of 5 is Odd