패리티 비트란?
패리티 비트(parity bit) 또는 체크 비트(check bit)는 비트 문자열에 추가되어, 문자열 전체에서 1의 개수가 짝수 또는 홀수가 되도록 만들어 주는 비트입니다. 데이터 전송 과정에서 발생할 수 있는 오류를 간단히 검출하기 위해 널리 사용되는 기본적인 오류 검출 방식입니다.
문제 설명
두 개의 매개변수를 받는 JavaScript 함수를 작성해야 합니다.
- parity: 원하는 패리티 유형 (항상 'even' 또는 'odd')
- bin: 검사하려는 숫자의 이진수 표현
함수의 목표는 0 또는 1의 정수를 반환하는 것입니다. 반환된 값은 해당 이진수 표현에 추가해야 할 패리티 비트로, 이 값을 붙였을 때 전체 문자열의 패리티가 요구 조건과 일치하게 됩니다.
예제
다음은 구현 코드입니다 −
const parity = 'even';
const bin = '0101010';
const findParity = (parity, bin) => {
const arr = bin
.toString()
.split("");
let countOnes = 0;
let res = 0;
for (let i = 0; i < arr.length; i++) {
if (arr[i] == 1) {
countOnes += 1;
}
};
if (parity == 'even') {
if (countOnes%2 == 0) {
res = 0;
} else {
res = 1;
}
} else {
if (countOnes%2 !== 0) {
res = 0;
} else {
res = 1;
}
};
return res;
};
console.log(findParity(parity, bin));
코드 동작 방식
위 코드의 로직을 단계별로 살펴보면 다음과 같습니다.
split("")메서드를 사용해 이진수 문자열을 개별 비트의 배열로 분할합니다.- 반복문을 실행하며 값이 1인 비트의 개수를 셉니다.
- 원하는 패리티가 'even'(짝수)이라면, 현재 1의 개수가 이미 짝수일 때는 0을, 홀수일 때는 1을 반환합니다.
- 원하는 패리티가 'odd'(홀수)라면 그 반대로 계산하여 반환합니다.
출력
1
입력된 이진수 '0101010'에는 1이 세 개 포함되어 있습니다. 즉, 1의 개수가 홀수이므로 'even' 패리티를 만족시키기 위해서는 1을 추가해야 합니다. 1을 추가하면 1의 총 개수가 네 개(짝수)가 되어 조건을 충족하게 됩니다.