목록으로
Day 95 호평동 · 남양주 중급

[호평동 영수학원] 바코드와 주민번호 끝자리, 검증 숫자의 비밀

핵심 개념

마트에서 물건을 계산대에 올리면 기계가 삑 소리를 내며 바코드를 읽습니다. 이 짧은 순간에 기계는 단순히 숫자를 읽는 것이 아니라, 그 숫자가 맞게 찍힌 숫자인지를 검산까지 하고 있습니다. 바코드 맨 끝자리는 사실 상품 번호가 아니라 앞의 숫자들로 계산해서 만든 검증 숫자이기 때문입니다.

우리나라에서 흔히 쓰는 13자리 바코드(EAN-13)를 예로 들어보겠습니다. 앞의 12자리 숫자에 번갈아 가며 1과 3을 곱해서 다 더합니다. 홀수 번째 자리는 1을 곱하고, 짝수 번째 자리는 3을 곱하는 식입니다. 예를 들어 앞 12자리가 880109931234 라고 해봅시다.

홀수 번째 자리 숫자들(8, 0, 0, 9, 3, 2)을 더하면 8+0+0+9+3+2 = 22 이고, 짝수 번째 자리 숫자들(8, 1, 9, 9, 1, 3, 4 중 짝수 번째인 8, 1, 9, 1, 4... )처럼 실제 계산은 자리마다 꼼꼼히 나눠야 하지만, 핵심은 이렇게 구한 합계에 3을 곱한 값을 더해서 하나의 큰 수를 만든다는 점입니다.

그 큰 수를 10으로 나눈 나머지를 구하고, 10에서 그 나머지를 빼면 마지막 검증 숫자가 나옵니다. 나머지가 0이면 검증 숫자도 0으로 둡니다.

왜 하필 10으로 나눈 나머지를 쓰는 걸까요. 10으로 나눈 나머지는 항상 0부터 9까지의 한 자리 숫자로만 나오기 때문입니다. 바코드의 마지막 칸도 숫자 한 칸이니까, 10으로 나눈 나머지가 자릿수를 딱 맞춰주는 셈입니다. 만약 스캐너가 앞의 12자리를 읽고 똑같이 계산했는데 마지막 숫자와 안 맞으면, 기계는 바코드가 잘못 찍혔거나 스캔이 잘못됐다고 판단하고 다시 읽으라는 신호를 보냅니다.

마트 계산대에서 가끔 바코드를 두세 번 찍어야 할 때가 있는데, 이게 바로 검증 숫자가 자기 역할을 하고 있는 순간입니다.

주민등록번호 끝자리도 비슷한 방식으로 만들어진다고 알려져 있습니다. 앞의 숫자들에 정해진 숫자들을 순서대로 곱해서 더한 다음, 그 합을 11로 나눈 나머지를 이용해 마지막 한 자리를 결정하는 구조입니다. 바코드는 10으로 나누고 주민번호는 11로 나눈다는 차이는 있지만, 둘 다 '여러 자리 숫자를 하나의 수식으로 압축해서, 그 결과가 특정 값과 일치하는지 확인한다'는 원리는 같습니다.

이런 식으로 만들어진 마지막 숫자를 수학과 전산 분야에서는 체크 디지트(check digit)라고 부릅니다.

이 원리를 교실에서 다루게 되는 이유는 나머지 연산이라는 개념이 중학교 수학에서 배우는 내용과 바로 연결되기 때문입니다. 어떤 수를 특정한 수로 나눈 나머지만 모아서 생각하는 방식은, 훗날 배우는 암호학이나 정보 이론에서도 똑같이 쓰입니다. 아이들에게는 생소하게 들릴 수 있지만, 사실 나머지를 이용해서 '맞는 답인지 틀린 답인지'를 가려내는 발상 자체는 초등학교 때 배우는 검산법과 뿌리가 비슷합니다.

덧셈을 하고 나서 각 자리 숫자를 더해 9로 나눈 나머지로 검산하는 방법을 배운 적이 있다면, 바코드의 원리도 어렵지 않게 받아들일 수 있습니다.

결과적으로 바코드 끝자리와 주민번호 끝자리는 둘 다 '숫자가 맞게 입력됐는지 스스로 확인하는 장치'입니다. 복잡한 암호를 숨겨둔 것이 아니라, 곱하고 더하고 나눈 나머지를 비교하는 정도의 계산으로 오류를 잡아낼 수 있다는 점이 흥미롭습니다. 평소에 무심코 지나치던 숫자 하나에도 이런 계산이 들어 있다는 걸 알면, 숫자를 보는 눈이 조금 달라질 수 있습니다.

자주 묻는 질문

바코드 마지막 숫자는 어떻게 계산되나요?
바코드 앞의 12자리 숫자에 번갈아 1과 3을 곱해서 모두 더한 뒤, 그 합을 10으로 나눈 나머지를 구합니다. 10에서 그 나머지를 빼면 마지막 검증 숫자가 나오고, 나머지가 0이면 검증 숫자도 0이 됩니다. 이 숫자를 체크 디지트라고 부릅니다.
주민등록번호 끝자리도 바코드처럼 계산해서 만든 숫자인가요?
그렇다고 알려져 있습니다. 앞자리 숫자들에 정해진 수를 곱해 더한 값을 11로 나눈 나머지를 이용해 마지막 숫자를 결정하는 방식으로, 바코드와 나누는 수만 다를 뿐 기본 원리는 비슷합니다.
체크 디지트는 왜 필요한가요?
숫자를 읽거나 입력할 때 생기는 오류를 기계나 사람이 스스로 확인할 수 있게 해주기 때문입니다. 앞자리로 계산한 값과 끝자리가 맞지 않으면 바코드 스캔 오류나 번호 오기입을 바로 알아챌 수 있습니다.
이 내용이 중학교 수학과 어떤 관련이 있나요?
나머지 연산이라는 개념과 직접 연결됩니다. 어떤 수를 나눈 나머지만으로 참, 거짓을 판단하는 발상은 중학교에서 배우는 나머지 개념은 물론, 이후 배우는 수학적 사고와도 이어지는 내용입니다.
우리 아이도 어디서 막혔는지 궁금하신가요? 바꿈 수학학원 · 호평동 | 무료 진단 상담을 받아보세요
1:1 상담 신청하기