2016-07-13 3 views
8

В Edward Kmett's article on CRCs он имеет следующий вывод:В этой статье Kmett CRC, почему ab = a0^n + 0^m b? Что означает эта нотация?

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 

Что в мире a0^n и 0^m b? Являются ли эти полномочия, например, a * pow(0, n)? Если да, то не будет 0^n = 0? Или XOR? Что-то еще? Является ли пространство значительным? Я не понимая, почему, например:

ab = a0^n + 0^m b 

и почему 0^m b стал 0^nb между третьей и четвертой строках?

+0

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

+0

@ Микаил Как я уже сказал, что не '0^п = 0 '? Без разницы. – rityzmon

ответ

9

Он использует обозначение для битовых строк. Здесь a и b - битовые строки длиной m и n соответственно.

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 
Смежные вопросы