NameZero912
NameZero912

Reputation: 41

CRC calculation by example

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.

Upvotes: 3

Views: 29009

Answers (3)

ramakanth
ramakanth

Reputation: 21

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.

Upvotes: 2

kosuke
kosuke

Reputation: 11

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

Upvotes: -2

Nayuki
Nayuki

Reputation: 18552

Both answers are correct. =)

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

Upvotes: 1

Related Questions