Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 이진수 패리티 비트 계산 및 추가하기

패리티 비트란?

패리티 비트(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의 총 개수가 네 개(짝수)가 되어 조건을 충족하게 됩니다.