CRC / XOR / modulo 2 긴나눗셈 계산기
CRC / XOR / modulo 2 긴나눗셈 계산기
Output: CRC remainder after XOR long division.
CRC / XOR / modulo 2 긴나눗셈 계산기는 올림·빌림 없이 각 단계에서 비트 XOR로 이진 나눗셈을 수행합니다. 이는 순환 중복 검사(CRC)의 산술입니다: 메시지에 0 비트를 붙이고 생성 다항식으로 나누며, 나머지가 CRC 체크섬이 됩니다. modulo 2 덧셈과 뺄셈이 모두 XOR이므로 매 단계는 단순 비트 비교입니다. 데이터 워드와 생성기(제수)를 입력하면 각 정렬, 각 XOR, CRC로 쓰이는 최종 나머지를 확인할 수 있습니다.
CRC / XOR / modulo 2 계산기 사용법
modulo 2 나눗셈으로 CRC를 계산하려면 다음 4단계를 따르세요:
- 첫 번째 칸에 2진 메시지(데이터 비트)를 입력하세요.
- 두 번째 칸에 2진 비트로 생성 다항식을 입력하세요.
- 계산기가 (생성기 길이 − 1)개의 0 비트를 붙입니다.
- 계산을 클릭하여 메시지를 XOR로 내리고 나머지를 CRC로 읽으세요.
CRC에서는 몫은 보통 버리고, 나머지만 전송 전 메시지에 붙는 체크섬입니다.
CRC와 modulo 2 산술
순환 중복 검사는 메시지를 큰 2진 다항식으로 보고 합의된 생성 다항식으로 나누어 전송 오류를 감지합니다. 나눗셈은 modulo 2(GF(2))에서 하며, 덧셈과 뺄셈이 동일하고 XOR입니다 — 올림·빌림이 없습니다. 이 나눗셈의 나머지가 CRC입니다. 수신 측이 메시지+CRC를 같은 생성기로 나누면 나머지 0은 오류 미검출을 뜻합니다. 이 계산기는 그 비트 단위 과정을 그대로 재현합니다.
나눗셈은 전체를 같은 묶음으로 나눕니다. 긴나눗셈은 이를 한 자리씩 합니다.
제수(32) — 나누는 수입니다. 괄호 왼쪽에 놓습니다.
modulo 2 CRC 나눗셈 작동 방식
계산기는 다섯 가지 내부 동작으로 CRC를 계산합니다:
- 생성기 비트 수 n에 대해 메시지에 (n − 1)개 0 비트를 붙입니다.
- 현재 나머지의 가장 왼쪽 1 비트 아래에 생성기를 정렬합니다.
- 해당 비트에 생성기를 XOR합니다(modulo 2 빼기, 빌림 없음).
- 다음 leading 1로 이동하며 XOR 정렬을 반복합니다.
- 남은 비트가 생성기보다 적을 때 멈추고, 그 비트가 CRC입니다.
몫 비트는 생성기가 XOR된 곳이 1, 아니면 0이지만, CRC에서는 최종 나머지만 중요합니다.
생성기 비트 수 n에 대해 메시지에 (n − 1)개 0 비트를 붙입니다.
CRC 나눗셈 공식
CRC / XOR / modulo 2 긴나눗셈 계산기는 GF(2)에서 CRC = (M(x) · xⁿ⁻¹) mod G(x)를 계산합니다. M(x)는 메시지, G(x)는 n비트 생성기, 모든 덧셈은 XOR입니다. 전송 프레임은 M(x)·xⁿ⁻¹ + CRC이며 G(x)로 정확히 나누어집니다. 수신 측에서 나머지 0은 무결성을 확인합니다.
CRC / XOR 예제
이 예제는 각 단계의 modulo 2 나눗셈과 XOR을 보여 줍니다.
예제 1 — 메시지 1101, 생성기 101
- 생성기 길이 3, 0 2개 붙임: 1101 → 110100.
- leading 비트에 101을 반복 XOR: 110100 → 011100 → 001000 → 000010.
- 마지막 2비트 10이 CRC 나머지.
예제 2 — 뺄셈이 XOR인 이유
- modulo 2에서 1 + 1 = 0, 1 − 1 = 0, 덧셈과 뺄셈이 같습니다.
- 그 연산이 비트 XOR이며 올림·빌림이 없습니다.
- 매 나눗셈 단계는 현재 비트에 생성기를 XOR하는 것입니다.
예제 3 — 수신 측 확인
- CRC를 메시지에 붙이고 같은 생성기로 나눕니다.
- 앞과 같이 XOR로 내립니다.
- 나머지 0이면 오류가 검출되지 않았음을 뜻합니다.
생성기 길이 3, 0 2개 붙임: 1101 → 110100. leading 비트에 101을 반복 XOR: 110100 → 011100 → 001000 → 000010. 마지막 2비트 10이 CRC 나머지.
modulo 2에서 1 + 1 = 0, 1 − 1 = 0, 덧셈과 뺄셈이 같습니다. 그 연산이 비트 XOR이며 올림·빌림이 없습니다. 매 나눗셈 단계는 현재 비트에 생성기를 XOR하는 것입니다.
CRC를 메시지에 붙이고 같은 생성기로 나눕니다. 앞과 같이 XOR로 내립니다. 나머지 0이면 오류가 검출되지 않았음을 뜻합니다.
CRC 풀이 예제
10110의 CRC(생성기 1011)는?
생성기 길이 4이므로 0 3개 붙여 10110000, XOR로 내립니다. 각 leading 1 아래 1011을 정렬해 XOR: 10110000 → … → 최종 3비트가 CRC. 나머지를 10110에 붙이면 생성기 1011로 나머지 없이 나누어지는 전체 프레임이 됩니다.
나머지 0이 데이터가 온전함을 뜻하는 이유는?
송신 측은 전송 프레임이 생성기의 정확한 배수가 되도록 CRC를 선택합니다. G(x)의 배수를 G(x)로 나누면 나머지 0. 전송 중 비트가 뒤집히면 보통 배수가 깨져 수신 측 나눗셈이 0이 아닌 나머지를 남깁니다.
흔한 CRC / modulo 2 실수
modulo 2 CRC 나눗셈에서 5가지 흔한 오류가 납니다:
- XOR 대신 일반 2진 빼기(빌림)를 쓰는 것.
- 0 비트를 (생성기 길이 − 1)개가 아닌 잘못된 수만큼 붙이는 것.
- leading 1이 아닌 0 비트 아래에 생성기를 정렬하는 것.
- GF(2)에 올림이 있다고 가정하는 것.
- 나머지가 아닌 몫을 CRC로 보고하는 것.
CRC / XOR / modulo 2 긴나눗셈 계산기는 매 단계 XOR하고, 올바른 0을 붙이며, 나머지를 체크섬으로 반환합니다.
자주 묻는 질문
modulo 2 나눗셈이란?
modulo 2 나눗셈이란?
CRC는 어떻게 계산하나요?
왜 일반 빼기 대신 XOR를 쓰나요?
메시지에 0을 몇 개 붙이나요?
수신 측 CRC 확인은?
CRC에서 몫은 중요한가요?
생성 다항식이란?
CRC 항등식
CRC / XOR / modulo 2 긴나눗셈 계산기는 GF(2)에서 CRC = (M(x)·xⁿ⁻¹) mod G(x)를 사용하므로, 전송 프레임 M(x)·xⁿ⁻¹ + CRC는 G(x)로 정확히 나누어집니다. 생성기 배수는 나머지 0이므로, 데이터가 온전하면 수신 측 modulo 2 나눗셈도 0을 반환합니다.