Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
80 Paralelizacija GA za rešavanje nekih NP-kompletnih problema<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
unsigned long FindCRC(int len, char *msg)<br />
{ int l;<br />
unsigned long crc;<br />
crc = INIT;<br />
l = len;<br />
while(l--)<br />
crc = (crc>>8) ^ crctable[(crc ^ *msg++) & 0xFFL];<br />
crc = crc ^ XOROT;<br />
return crc;<br />
} /* FindCRC */<br />
Slika 4.4 Funkcija za računanje CRC vrednosti<br />
Svi parametri potrebni za računanje CRC vrednosti su dati u tabeli 4.1, a već<br />
su primenjeni u programskim specifikacijama za: PKZip, AUTODIN II, Ethernet i<br />
FDDI. Dati parametri sadrže redom sledeće informacije:<br />
• Ime pridruženo odgovarajućem algoritmu;<br />
• Broj bitova rezultata;<br />
• Generator polinoma koji se kasnije primenjuje za računanje CRC vrednosti.<br />
Od izbora ovog parametra u velikoj meri zavisi kvalitet dobijenih CRC<br />
vrednosti, pa je preuzet direktno iz literature ([Tnb81], p. 130-132), gde se<br />
može naći i detaljan opis;<br />
• Početna vrednost u registru, pri računanju CRC koda;<br />
• Logička vrednost koja označava da li se vrši obrtanje ulaznih bitova, pri<br />
čemu bit na poziciji 0 postaje bit najveće težine, ili ne, kada je bit na poziciji<br />
0 najmanje težine;<br />
• Parametar koji slično prethodnom, označava da li se konačna vrednost u<br />
registru invertuje ili ne, pre vraćanja rezultata;<br />
• Vrednost na koju se primenjuje operacija isključive disjunkcije (XOR) po<br />
bitovima sa tekućom vrednosti registra posle eventualne inverzije definisane<br />
prethodnim parametrom RefOut;<br />
• Poslednji parametar nije obavezan, već samo služi za proveru korektnosti<br />
algoritma. On predstavlja CRC vrednost ASCII stringa "123456789"<br />
odnosno heksadecimalnog niza 0x313233343536373839.<br />
Tabela 4.1 Parametri CRC algoritma<br />
Parametar Tip Vrednost<br />
Name string "CRC-32"<br />
Width integer 32<br />
Poly hex. long int. 04C11DB7<br />
Init hex. long int. FFFFFFFF<br />
RefIn boolean True<br />
RefOut boolean True<br />
XorOut hex. long int. FFFFFFFF<br />
Check hex. long int. CBF43926