바코드와 수학

수학이야기 2011. 4. 27. 19:12
반응형

1923년 미국 하버드 대학의 월리스 플린트(Wallace Flint)가 '슈퍼마켓의 계산자동화'에 대한 논문을 써서 계산자동화의 좋은점을 처음으로 말했습니다. 1940년에 조 우드랜드(Joe Woodland)와 버니 실버(Berny Silver)는 이른바 '황소 눈 코드'라고도 불리는 바(Bar)와 스페이스(Space)가 동심원을 그리는 소형 사격 표적형태의 식료품 가격 자동처리 방법을 연구하였는데, 이는 오늘날의 바코드와 비슷합니다.

1973년 미국 슈퍼마켓특별위원회(U.S. Supermarket Ad Hoc Committee)가 세계상품코드(UPC : Universal Product Code)를 식료품업계 표준으로 제정하면서 일반화되기 시작했습니다. 미국이 UPC를 제정하여 미국과 캐나다의 슈퍼마켓에서 성공을 거두자 유럽에서도 12개국이 모여 1976년 말 13자리로 된 EAN(European Article Number)코드와 심볼을 채택하게 됩니다.

우리나라는 1988년 EAN에 가입, 국가코드 880번을 부여받고 같은 해에 한국공통상품코드(KAN : Korean Article Number) 체계를 세워 현재는 한국 유통 정보 센터에서 각 제조업체 코드를 등록하여 상품에 바코드를 붙이고 있습니다.

 

보통 13개의 숫자로 이루어지는데 처음 세 개의 숫자 '880'은 한국, 다음의 네 개는 제조업자이고, 그 다음 다섯 개는 상품을 나타내는 고유번호입니다. 이 가운데 마지막 숫자가 체크 숫자이다. 체크 숫자는 홀수 번째 자리에 있는 숫자들을 그대로 더하고 짝수 번째 자리에 있는 숫자들은 3배해서 더한 전체의 합이(모듈번호) 10의 배수가 되도록 정한다.

 

8801037002782의 경우를 생각해 보자.
앞의 12개의 수를 정해진 규칙대로 계산해보면 8+8×3+0+0+1×3+0+3×3+7+0×3+0+2×3+7+8×3
=8+0+0+7+0+7+(8+1+3+0+2+8)×3 =22+66 =88 이므로 체크 숫자를 2로 한 것이다.

이렇게 체크 숫자를 정하면, 한 개의 숫자를 잘못 읽은 경우를 모두(100%)찾아내고, 인접한 두 숫자를 바꾸어 입력한 경우도 '대부분(정확하게는 88.9%) 찾아낼 수 있다. 짝수 번째 자리의 숫자에 3을 곱하는 가중치 효과다. 상품번호의 약점 가운데 하나는 인접한 두 숫자의 차가 5일 때, 이 두 숫자를 바꾸어 입력해도 잘못를 찾아 낼 수 없다는 점이다.

위의 바코드에서 27을 72로 바꿔 8801037007282로 입력했다고 하자. 그래도 결과는 10의 배수가 되므로 컴퓨터는 잘못을 인식할 수 없다. 따라서 제조업자는 상품번호를 정할 때 이런 경우를 미리 피해야 한다.

 

담배 같은 경우는 상품 번호가 8개의 숫자로(8800-9605)이뤄졌다. 이런 경우에는 홀수 번째 자리에 있는 숫자들을 3배해서 더하고 짝수 번째에 있는 숫자들은 그대로 더한 전체의 합이 10의 배수가 되도록 체크 숫자를 정한다. 왜냐하면 체크 숫자에는 가중치가 곱해지지 않도록 하기 위해서다.

 

ISBN은 국제 표준 도서번호(International Standard Book Number)라는 것으로 전 세계에서 발행된 책에 붙이는 고유번호다. 앞에는 ISBN이라는 말을 붙이고 그 뒤로 열자리의 고유번호를 가진다. 책 뒤를 보면 바코드가 그려진 밑 부분에 적혀 있는데, 'ISBN-89-85342-29-0'과 같은 형식으로 적혀 있다.

처음 나오는 숫자는 국가번호로 한국은 89번이다. 다음 번호는 발행자, 즉 출판사번호인데 출판량에 따라서 2자리에서 6자리까지 조정할 수 있다. 세 번째 번호는 출판사에서 발행한 책에 대한 식별번호나 일련번호인데, 우리나라는 발행자 번호와 식별번호를 합쳐서 항상 7자리를 맞추어야 한다. 마지막 한 자리는 기호의 잘못 여부를 검사하기 위한 검사기호를 넣는데, 숫자나 영문자 X를 사용할 수 있다.

그리고 한국의 책은 10자리 ISBN에 부가기호 5자리를 함께 사용하는데, 부가기호는 한 자리의 독자대상 기호와 발행형태 기호, 세 자리의 내용분류 기호로 구성되어 있어 책의 분류에 돕는다.

책과 각종 음반물에는 국제표준 도서번호(ISBN)가 붙어 있다. ISBN에 뒤이어 10개의 숫자가 하이픈(-)으로 구분돼 나타나는데, 여기서도 마지막 숫자가 체크 숫자이다. 10개의 숫자에 10부터 1까지의 자연수를 차례로 곱해서 더한 합이 11의 배수가 되도록 체크 숫자를 정한다. 11의 배수가 되기 위해서는 체크 숫자로 10을 이용할 경우가 생긴다. 이런 경우에는 X로 10을 대신한다. 예를 들어 ISBN 89-7282-108-X의 경우가 그렇다.

8×10+9×9+7×8+2×7+8×6+2×5+1×4+0×3+8×2 =80+81+56+14+48+10+4+0+16=309 이고 11로 나눈 나머지가 1이므로 체크 숫자를 10으로 하면 되는데 두 자리 이므로 X라고 적는다. 이렇게 체크 숫자를 정하면, 한 개의 숫자를 잘못 읽은 경우와 인접한 두 숫자를 바꾸어 입력한 경우를 모두(100%)찾아 낼 수 있다. 가중치를 주는 방법을 바꾸고 10대신에 11이라는 소수를 이용한 효과다.

그런데 도서 번호는 바코드로 나타나 있지 않으므로 스캐너로 직접 읽을 수 없다. 이에 따라 도서번호를 상품번호로 바꾼 바코드를 함께 제시한다. 국내 단행본 번호 '978'뒤에 도서 번호의 처음 9개의 숫자를 그대로 적은 다음 체크숫자를 붙인다. 이 때 체크 숫자는 상품번호에서 이용한 방법으로 정한다. 예를 들면 ISBN 89-7282-108-X 는 상품번호로 978 897282108 3이 된다. 이 경우는 상품번호이므로 상품번호의 체크 숫자를 확인하는 방법을 사용한다.

잡지와 같은 연속 간행물에는 7자리의 고유번호와 한 자리의 체크 숫자로 이루어진 국제 연속 간행물 번호(ISSN)를 붙이며, 상품번호로 바꿀 때는 국내 연속 간행물 번호인 '977'을 앞세우고 고유번호인 7개의 숫자, 예비 기호'00', 체크 숫자를 나열한다. 과학동아의 경우 ISSN 1228-3401에서 마지막 1이 체크 숫자이다. 이 때 각 숫자에 8부터 1까지의 숫자를 곱한 것이 11의 배수가 되도록 체크 숫자를 정한다.

반응형