디지털 데이터의 오류를 감지하기 위해 CRC가 사용되며, 이는 전송 오류를 감지하는 데 좋은 기술입니다. 이 기술에서는 주로 이진 나누기가 적용됩니다.
이 기술에서는 일련의 중복 비트인 순환 중복 검사 비트가 존재하며 이 비트는 결과 데이터 단위가 미리 결정된 이진수인 초로 정확히 나눌 수 있도록 데이터 단위 끝에 추가됩니다.
대상 측에서 수신 데이터를 동일한 숫자로 나누고 나머지가 없으면 데이터가 정확하고 수락할 준비가 된 것으로 가정합니다.
나머지는 전환 중에 어떤 일이 발생하여 데이터 단위가 손상되었음을 나타냅니다. 따라서 이 데이터 단위는 허용되지 않습니다.
예시 코드
frompycrc.crclib import * def main(): #----------------------------------------------------------------------------- #Sender Side div = str(input("Input divisor in binary type: ")) #user_dataword = str(raw_input("Input dataword in binary type: ")) userdataword = '1001' print ("\nSender:") sen = Sender(bin2dec(userdataword), div) sen.send() print ("arg_dataword:", sen.arg_dataword2) print ("remainder:", sen.remainder2) print ("codeword:", sen.codeword2) #----------------------------------------------------------------------------- #Channel print ("\nChannel:") ch = Channel(sen.codeword) print ("Through to the channel get channel codeword:", dec2bin(ch.ch_codeword)) #----------------------------------------------------------------------------- #Receiver Side print ("\nReceiver:") rcv = Receiver(ch.ch_codeword, div) rcv.receive() print ("syndrome:", rcv.syndrome2) print ("Discard or not?", rcv.discard) print ("rx_dataword:", rcv.rx_dataword2) if __name__ == '__main__': main()
출력
Sender Input dataword in binary type 1010000 arg_dataword:1010000000 remainder: 011 codeword:1010000011 Receiver syndrome:1010000011 Discard or not? N rx_dataword:1010000011