오류 검출 코드를 사용하면 할 수 있다
https://arca.live/b/physics/40290007?p=1
여기서 나온 이야기인데 1800년대, 즉 섀넌이 1900년대 중반에 통신의 수학적 원리를 규명하기 전에는 통신규약은 커녕 잡음에 대한 대책이 없었다
통신공학 배우면 존나 존나 지겹게 등장하는 n(x)라는 놈이 바로 잡음. 잡음은 비트에 에러를 유발한다.
니가 0000의 신호를 보냈는데 받는쪽에선 0001의 신호를 받을 수 있음.
그냥 에러가 난게 문제가 아니라, 몇 개의 에러가 났는지, 어디서 에러가 났는지 모르는게 무서운것
이걸 어떻게 해결할 수 있을까?
간단히 생각하면 같은 신호를 두 번 보내는게 좋은 방법일 수 있겠다.
에러가 생길 확률 자체는 낮으니까 같은 자리에 두 번 에러가 생기지는 않겠지
하지만 이게 최선일까? 이러면 같은 신호를 보내는데 두 배, 혹은 그 이상의 정보를 전송해야 하는 문제가 생긴다
두 번 보내는 대신 두번째에 내가 보낸 신호를 요약해서 나중에 보내주면 정보량도 적고 일단 에러가 있는 지는 알 수 있을 거다.
예를들어 0000이라는 신호에 '1이 짝수개 있음'이라는 의미로 1을 붙이기로 약속해서 보내면 00001이겠지
이 신호가 잡음에 오염돼서 수신단에서 10001을 받았으면 어디가 잘못됐는진 몰라도 아무튼 잘못됐으니 신호를 다시 쏴달라고 하면 되겠지

하지만 어디서 에러가 생겼는지는 모르니 에러가 어디서 났는지 알 수도 있으면 좋을것같다. 어떻게 해야 할까?
신호를 2차원으로 배열해서, 예를 들면 12개의 신호를 4개씩 잘라내면
0001
1010
1110
첫번째 줄은 1이 홀수개니까 0, 두번째 줄은 1, 세번째 줄은 0이니 오른쪽에 101을 붙이고 또 세로로 읽어서 밑에 1,0,1,0을 붙여주면
00101
10100
11101
1010X
뭐 이런식의 신호가 나오는데 아까 전보다 정보량은 많지만 에러가 나타난 위치를 알아낼 수 있다 이 방식이 뭔지, 저 x에 뭐가 들어가는지는 까먹었다
이렇게 단순하게 하는게 아니라 오류 정정 코드끼리 XOR 연산해서 신뢰도를 더 높여서 쓰는걸로 아는데 이것도 기억나지 않는다
필자가 통신공학시간에 25명중에 5명빼고 전부 빤쓰런한 지옥같은 수업에서 정신을 잃어버려서 이 이상으론 기억나지 않으므로 글은 여기서 마친다