4
votes

I'd like to confirm whether I grasped the concept of CRC calculations correctly. I'll provide two examples, the first is calculating the remainder using normal subtraction, the second uses this weird XOR stuff.

Data bits: D = 1010101010.
Generator bits: G = 10001.

1) Subtraction approach to calculate remainder:

10101010100000
10001|||||||||
-----|||||||||
  10001|||||||
  10001|||||||
  -----|||||||
  000000100000
         10001
         -----
          1111

R = 1111.

2) XOR approach:

10101010100000
10001|||||||||
-----|||||||||
  10001|||||||
  10001|||||||
  -----|||||||
  00000010000|
        10001|
        ------
        000010

R = 0010.

3
I should probably attach the question, all right: CRC uses the XOR approach, right? Did I do the XOR-example correctly? - NameZero912

3 Answers

2
votes

Appending 1111 at the end does not satisfy the need since

10927 % 17 != 0

.

Note that as per the definition, the division should be modulo division as it is based upon modulo mathematics.

1
votes

Both answers are correct. =)

(To recheck the first answer:
10101010100000 (binary) mod 10001 (binary)
= 10912 (decimal) mod 17 (decimal)
= 15 (decimal)
= 1111 (binary).)

-2
votes

Subtraction is wrongly done. In binary modulo, subtraction, addition, division, and multiplication are the same. So, XOR is correct.