**Mã sản phẩm chung** (tiếng Anh: *Universal Product Code*, viết tắt: **UPC**) là các mã vạch được sử dụng rộng rãi tại Mỹ và Canada cho các mặt hàng tại các cửa hàng. Mặt hàng đầu tiên được đưa qua máy quét UPC trong cửa hàng bán lẻ là một gói 10 thanh kẹo cao su *Juicy Fruit* của Wrigley tại siêu thị Marsh ở Troy, Ohio, vào ngày 24 tháng 6 năm 1974.

Trong mã vạch UPC-A, mỗi số được biểu diễn theo chuỗi 7 bit, được mã hóa thành một dãy các vạch và khoảng trắng có độ rộng khác nhau. Các vạch bảo vệ được hiển thị với màu xanh lục, chia tách hai nhóm sáu số.
UPC-A (tên chính thức hiện nay là **EAN.UCC-12**) mã hóa 12 số như sau: S**LLLLLL**M**RRRRRR**E, trong đó S (bắt đầu) và E (kết thúc) là các bit mẫu 101, M (giữa) là các bit mẫu 01010 (gọi là các vạch bảo vệ), và mỗi L (trái) và R (phải) là các số, mỗi số dài 7 bit. Tổng cộng có 95 bit. Mẫu chuỗi bit cho mỗi giá trị số được thiết kế sao cho chúng khác nhau một chút, và không có quá 4 bit 1 hay 0 trong chuỗi. Cả hai giá trị bit này đều có khả năng đọc được trong quá trình quét.

Các mã vạch UPC-A giống như các loại mã vạch UPC khác, chỉ mã hóa các giá trị số, mà không mã hóa các chữ cái hay các ký tự dấu câu. Số bên trái (L) đầu tiên bằng 0 đối với các mặt hàng thông thường, 3 cho các mặt hàng dược phẩm, 2 đối với các mặt hàng bán theo trọng lượng, và 5 dành cho vé hay phiếu (mặc dù các cửa hàng thông thường không dùng số này mà sử dụng 000000 hay 999999). Các số bên trái (L) còn lại là mã nhà sản xuất. Năm số bên phải (R) đầu tiên là mã sản phẩm được nhà sản xuất tự đánh số. Số bên phải R cuối cùng là số kiểm tra, để phát hiện các sai sót trong quá trình quét hay nhập liệu thủ công. Trong hệ thống của UPC-A, số kiểm tra được tính như sau:

1. Lấy tổng của tất cả các số ở vị trí lẻ (1, 3, 5, v.v) và nhân với 3 được số A.
2. Lấy tổng của tất cả các số ở vị trí chẵn (2, 4, 6, v.v) được số B.
3. Lấy tổng của hai số nói trên (A+B)
4. Lấy hiệu của số lớn nhất chia hết cho 10 (gần nhất với số đã tìm thấy (A+B)) và số đó. Hiệu số chính là số kiểm tra.

Ví dụ, mã vạch UPC-A "03600029145X" trong đó *X* là số kiểm tra, thì *X* có thể tính bằng cách lấy tổng các số ở vị trí lẻ (0+6+0+2+1+5 = 14), nhân với 3 (14 × 3 = 42), cộng thêm với tổng các số ở vị trí chẵn 42+(3+0+0+9+4) = 58 và lấy hiệu của số chia hết cho 10 lớn nhất gần với nó (60 - 58 = 2). Do đó số kiểm tra bằng 2 và chuỗi hoàn chỉnh là "036000291452".

Các mặt hàng dược phẩm tại Mỹ có số hệ thống trong UPC như là số NDC của họ (viết tắt của từ tiếng Anh: *National Drug Control*). Các mặt hàng bán theo trọng lượng, chẳng hạn như thịt hay hoa quả tươi hoặc rau xanh, được gắn số UPC-A bởi cửa hàng nếu chúng được đóng gói ở đó. Trong trường hợp này, các số bên trái LLLLL là số của mặt hàng, và các số bên phải \_RRRR hoặc là trọng lượng hoặc là giá của chúng, với số R đầu tiên xác định điều này. Tương tự, vé hay phiếu có mã trong LLLLL, giá trị được lấy ra từ \_RRRR, và giá trị này là phần trăm hay là giá trị bằng chữ được mã hóa trong số bên phải (R) đầu tiên.

Thể hiện
--------

Trong mã vạch, mỗi số được thể hiện bằng 2 vạch và 2 khoảng trắng. Một cấu hình được sử dụng cho các số bên trái "L", trong khi cấu hình còn lại sử dụng cho các số bên phải "R". (Điều này không mâu thuẫn với phương thức mã hóa chẵn lẻ của EAN-13, do nếu quy đổi thành EAN-13 thì UPC-A có số đầu tiên bằng 0 và khi số đầu tiên của EAN-13 bằng 0 thì các số có số thứ tự từ 2 đến 7 (1 đến 6 trong UPC-A) được mã hóa theo tính lẻ). Điều này được sử dụng để làm cho mã vạch có thể được quét ngược hay xuôi, giúp cho máy quét có thể xác định từ hướng nào các mã được quét và làm cho nó được đăng ký chính xác vào máy tính. Nếu như không có điều này, sản phẩm có thể dễ dàng bị đăng ký sai.

Mỗi số có 4 dạng mã hóa, trong đó 2 được sử dụng trong UPC-A và 3 trong EAN. Ví dụ, số 6 có thể mã hóa thành:

* `0101111` (Trong nửa trái của mã vạch UPC-A và EAN nếu mã hóa theo tính lẻ).
* `1010000` (Trong nửa phải của mã vạch UPC-A/EAN).
* `0000101` (Trong nửa trái của các mã vạch EAN nếu mã hóa theo tính chẵn).
* `1111010` (Không sử dụng)

Hai dạng đầu là phần bù của nhau, cũng như hai dạng sau (ba và bốn).

Mã hóa nhị phân cho 10 giá trị các số bên trái trong UPC như sau:

* 0: `0001101`
* 1: `0011001`
* 2: `0010011`
* 3: `0111101`
* 4: `0100011`
* 5: `0110001`
* 6: `0101111`
* 7: `0111011`
* 8: `0110111`
* 9: `0001011`

Phần mã cho các số bên phải (R) của UPC đơn giản là phần bù của các mã cho các số bên trái tương ứng (L). Tất cả các số bên trái của UPC có tính lẻ, trong khi các số bên phải có tính chẵn.

Chuỗi số mã công ty được cấp bởi EAN-UCC tại từng quốc gia, con số này hiện nay dài hơn 5 số (tương đương với mã sản phẩm ngắn hơn) đối với các công ty nhỏ.

### UPC-E và các loại khác

UPC-E cũng như UPC-B, UPC-C, UPC-D và các loại UPC bổ sung 2 số hay 5 số là các biến thể của UPC-A. Trên thực tế UPC-E được sử dụng rộng rãi hơn các loại mã vạch còn lại. Xem thêm bài UPC-E.

Mở rộng
-------

EAN đã được phát triển như là tập hợp cha của UPC, bổ sung thêm số vào đầu chuỗi để có thể cấp được nhiều số hơn trên phạm vi toàn cầu. Số 0 đã được dành cho UPC, và trên thực tế Hội đồng mã thống nhất (UCC) đã yêu cầu các hệ thống bán lẻ phải cải tạo để có thể nhận dạng các mã vạch UPC và EAN vào cuối năm 2004. Vào năm 2005, các nhà sản xuất phải đưa các chuỗi 13 số vào trên bề mặt các mặt hàng của họ, thay vì có hai hệ thống số riêng biệt. Ngoài ra, điều này cũng cho phép mở rộng các số có thể cấp cho Mỹ và Canada thêm 50%, bổ sung thêm 10 tới 14 vào 00 tới 09 (0 tới 9 trong UPC) đã sử dụng.

Xem thêm
--------

* Mã vạch

Tham khảo
---------

Liên kết ngoài
--------------

* Details on the checksum algorithm Lưu trữ 2005-06-24 tại Wayback Machine
* Exceptions to the general algorithm for zero-suppressed barcodes Lưu trữ 2004-12-16 tại Wayback Machine
* The Internet UPC Database
* Barcode-database.com


| * x
* t
* s
Mã vạch |
| --- |
| Linear barcodes | 
* Automatic Car Identification
* Code 11
* Code 39
* Code 93
* Code 128
* Codabar
* European Article Number
* GS1 DataBar
* ITF-14
* Interleaved 2 of 5
* MSI Barcode
* Patch Code
* Pharmacode
* Plessey
* Telepen
* UPC

 | 

|  |
| --- |
|  |
| UPC-A |
|  |
| MaxiCode |

 |
| Mã vạch bưu chính | 
* CPC Binary Barcode
* Facing Identification Mark
* PostBar
* POSTNET
* RM4SCC
* Intelligent Mail barcode
* PLANET

 |
| 2D barcodes (stacked) | 
* GS1 DataBar
* PDF417

 |
| 2D barcodes (Ma trận) | 
* Aztec Code
* Data Matrix (Semacode)
* MaxiCode
* Mã QR

 |
| Mã vạch tọa độ cực | 
* MaxiCode
* ShotCode

 |
| Other | 
* High Capacity Color Barcode (Microsoft Tag)

 |
| Technological issues | 
* Máy quét mã vạch
* Máy in mã vạch

 |
| Other data tags | 
* RFID
* Bokode

 |
| Related topics | 
* Quản lý chuỗi cung cấp
* Object hyperlinking
* Ma trận
* Mobile tagging
* CueCat

 |