2016-07-13 34 views
8

In Edward Kmett's article on CRCs es hat die folgende Ableitung:Warum ist bei diesem Kmett CRC-Artikel ab = a0^n + 0^m b? Was bedeutet diese Notation?

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 

Was in der Welt ist a0^n und 0^m b? Sind diese Kräfte, wie ? Wenn ja, wäre nicht 0^n = 0? Oder XOR? Etwas ganz anderes? Ist der Raum signifikant? Ich verstehe nicht, warum zum Beispiel:

ab = a0^n + 0^m b 

und warum 0^m b wurde 0^nb zwischen den dritten und vierten Linien?

+0

https://wiki.haskell.org/Power_function –

+0

@ Mika'il Wie gesagt, würde nicht '0^n = 0'? Macht keinen Sinn. – rityzmon

Antwort

9

Er verwendet eine Notation für Bitstrings. Hier sind ein und b sind Bitstrings der Länge m und n jeweils.

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