숫자의 패리티는 해당 숫자에 해당하는 이진수에 있는 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