In Edward Kmett's article on CRCs it has the following derivation:
CRC(ab) = -- definition of CRC
crc(INIT,ab) + FINAL = -- linearity
crc(INIT,a0^n + 0^m b) + FINAL = -- additive homomorphism
crc(INIT,a0^n) + crc(0,0^nb) + FINAL = -- zero blindness
crc(INIT,a0^n) + crc(0,b) + FINAL -- definition of crc
crc(crc(INIT,a),0^n) + crc(0,b) + FINAL -- additive homomorphism
crc(crc(INIT,0^m)+crc(0,a),0^n) + crc(0,b) + FINAL
What in the world is a0^n
and 0^m b
? Are these powers, like a * pow(0, n)
? If so, wouldn't 0^n = 0? Or XOR? Something else entirely? Is the space significant? I am not understanding why, for example:
ab = a0^n + 0^m b
and why 0^m b
became 0^nb
between the third and fourth lines?
He's using a notation for bit strings. Here a and b are bit strings of length m and n respectively.
ab = a concatenated with b
0^n = the bit string of length n consisting of all 0s
a0^n = a concatenated with 0^n
0^m b = 0^m concatenated with b
a0^n + 0^m b = sum of a0^n and 0^m b (same as the bitwise OR in this case)
= a concatenated with b
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With