CRC ใช้ตรวจสอบข้อผิดพลาดข้อมูลดิจิทัล โดยใช้ binary division เพิ่ม check bits ให้ข้อมูลหารด้วย divisor ลงตัว
ฝั่งส่ง: คำนวณ remainder แนบเป็น codeword
ฝั่งรับ: หาร codeword ด้วย divisor เดียวกัน ถ้า remainder=0 ข้อมูลถูกต้อง
โค้ดตัวอย่าง (ใช้ pycrc library)
from pycrc.crclib import *
# Sender
div = input("Input divisor in binary: ")
dataword = '1001'
sen = Sender(int(dataword, 2), div)
sen.send()
print("codeword:", sen.codeword2)
# Channel
ch = Channel(sen.codeword)
print("Channel codeword:", bin(ch.ch_codeword))
# Receiver
rcv = Receiver(ch.ch_codeword, div)
rcv.receive()
print("syndrome:", rcv.syndrome2)
print("Discard?", rcv.discard)
print("rx_dataword:", rcv.rx_dataword2)
ผลลัพธ์ตัวอย่าง
Sender: arg_dataword: 1010000000 remainder: 011 codeword: 1010000011 Receiver: syndrome: 1010000011 Discard or not? N rx_dataword: 1010000011