Live Editable Python: CRC (Modulo-2)
You can edit the code in the box below. When you click run, a pop-up will ask for your input!
def xor_division(bits, generator): data = list(bits) gen = list(generator) for i in range(len(data) - len(gen) + 1): if data[i] == '1': for j in range(len(gen)): data[i + j] = str(int(data[i + j]) ^ int(gen[j])) return ''.join(data[-(len(gen) - 1):]) # _-_-_ Sender _-_-_ print("Sender's Side: ") dataword = input("Enter dataword bits: ") generator = input("Enter generator bits: ") print("\nDataword :", dataword) print("Generator:", generator) zeros = '0' * (len(generator) - 1) padded_data = dataword + zeros print("Padded data : ", padded_data) crc = xor_division(padded_data, generator) print("CRC :", crc) codeword = dataword + crc print('Codeword :', codeword) # _-_-_ Receiver _-_-_ print("\nReceiver's Side:") received = input("Enter received bits: ") receiver_remainder = xor_division(received, generator) print("Receiver remainder:", receiver_remainder) if receiver_remainder == '0' * (len(generator) - 1): print("Result: No Error Detected") else: print("Result: Error Detected")
▶ Run Code
Terminal Output:
System Ready...