CRC ( Cyclic Redundancy Checks )
통신을 할때는 주위의 전자적인 영향 혹은 기타 요인으로 오류가 생길 수 있습니다
이러한 오류를 검출해야 될 필요가 있고.. 오류가 난 데이터에 한해서는 재 송신을 한다던지
조치를 취할 수 있어야 데이터를 주고 받을때 신뢰성을 갖게 됩니다
오류를 검출 해 내는 방법 - parity Check, SumCheck 등 다양
CRC 또한 오류를 검출 해내는 방법의 하나
------------------------------------
T(x) = transmitting string |
B(x) = given bit string |
G(x) = generator polynomial |
R(x) = remainder |
------------------------------------
이해가 안갈 듯 해서 실제 바이너리를 대입해서 설명하면.
4비트 생성자 값 G(x) = 1001 , D 는 11111010 이라고 했을때 CRC체크
G(x) 가 4자리의 비트이므로 D에 3자리를 더해서 11111010000 이 된다.
연산은 XOR이므로 나눌때 값이 작다고해서 나누지 못하는게 아닙니다.
1 1 1 0 0 1 1 0
1001 |---------------------------
| 1 1 1 1 1 0 1 0 0 0 0 [ 모든 연산은 XOR 연산 ]
1 0 0 1
-----------
1 1 0 1
1 0 0 1
-----------
1 0 0 0
1 0 0 1
---------
1 1 0 0
1 0 0 1
-----------
1 0 1 0
1 0 0 1
----------
1 1 0 <- R ( remainder )
전송되는 비트 -> 11111010110 ( CRC code )
검산
1 1 1 0 0 1 1 0
1001 |--------------------------
| 1 1 1 1 1 0 1 0 1 1 0
1 0 0 1
-----------
1 1 0 1
1 0 0 1
----------
1 0 0 0
1 0 0 1
----------
1 1 0 1
1 0 0 1
----------
1 0 0 1
1 0 0 1
----------
0
출처 : http://dlrbtjd86.blog.me/92426289
참고 :
http://ko.wikipedia.org/wiki/%EC%88%9C%ED%99%98_%EC%A4%91%EB%B3%B5_%EA%B2%80%EC%82%AC
http://blog.bagesoft.com/858
'학습자료(~2017) > 팁' 카테고리의 다른 글
__restrict__ (0) | 2012.07.26 |
---|---|
디버깅 방법 (0) | 2012.07.26 |
유저 파일시스템 - 드라이버 제작 필요 없이 유저영역에서 파일시스템 드라이버 제작 (1) | 2012.03.08 |
[PHP] php5 로 업그레하고 난 후 소스가 그대로 보이는 문제 해결법 (0) | 2012.02.28 |
[PHP] mysql c/php API (라이브러리) - 펌(한글) (0) | 2012.02.27 |