डिजिटल डेटा में त्रुटियों का पता लगाने के लिए 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