# Codi Universal de Producte

El Codi Universal de Producte (UPC en anglés) és una simbologia de codi de barres que s'utilitza àmpliament als Estats Units, el Canadà, Regne Unit, Austràlia, Nova Zelanda, Europa i altres països per a rastrejar articles comercials a les botigues.
UPC (tècnicament es refereix a UPC-A) consta de 12 dígits numèrics, que s'assignen de manera única a cada article comercial. Juntament amb el codi de barres EAN relacionat, l'UPC és el codi de barres utilitzat principalment per a l'escaneig d'articles comercials en el punt de venda, segons les especificacions GS1. Les estructures de dades de la UPC són un component dels GTIN i segueixen l'especificació global del GS1 que es basa en estàndards internacionals. Però alguns detallistes (roba, mobles) no usen el sistema GS1 (més aviat altres simbologies de codis de barres o sistemes de nombres d'articles). D'altra banda, alguns detallistes utilitzen la simbologia de codis de barres EAN / UPC, però sense utilitzar un GTIN (només per a productes venuts en les seves pròpies botigues).

## Història

El 1932 Wallace Flint va proposar un sistema de pagament automatitzat utilitzant targetes perforades. Bernard Silver i Norman Joseph Woodland, un estudiant graduat de l'Institut de Tecnologia Drexel (ara Universitat de Drexel), van desenvolupar un codi d'estil bull's-eye (d'ull de bou) i van sol·licitar la patent el 1949.
En la dècada de 1960, els ferrocarrils van experimentar amb un codi de barres multicolor per a rastrejar vagons, però finalment es va abandonar.
Un grup d'associacions comercials de la indústria de comestibles va formar el Consell Uniforme de Codi de Productes de Comestibles que, juntament amb els consultors Larry Russell i Tom Wilson de McKinsey & Company, van definir el format numèric del Codi Uniforme de Productes. Les empreses de tecnologia com Charegon, IBM, Litton-Zellweger, Pitney Bowes-Alpex, Plessey-Anker, RCA, Scanner Inc., Singer, i Dymo Industries/Data General van proposar representacions alternatives de símbols per al consell. Al final, el Comitè de selecció de símbols va triar modificar lleugerament, canviant la font en l'àrea llegible per humans, la proposta d'IBM dissenyada per George J. Laurer.
El primer article marcat UPC que es va escanejar en una venda minorista va ser en el supermercat Marsh en Troy, Ohio, a les 8.01 a. m. del 26 de juny de 1974 i era un paquet de 10 (50 cartutxos) de xiclets «Wrigley's Juicy Fruit». El comprador va ser Clyde Dawson i la caixera, Sharon Buchanan, va realitzar el primer escaneig UPC. La caixa registradora de NCR va registrar un augment de 67 centaus. Tot el carro de la compra també tenia articles amb codi de barres, però el xiclet va ser el primer recollit. Aquest article es va exhibir en el Museu Nacional d'Història Estatunidenca de l'Institut Smithsonian a Washington D. C.

### Proposta d'IBM i desenvolupament del codi

Cap a finals de 1969, IBM en Research Triangle Park (RTP) a Carolina del Nord va assignar a George Laurer la tasca de determinar com fer un escàner i una etiqueta de supermercat. A finalitats de 1970, Heard Baumeister va proporcionar equacions per calcular els caràcters per polzada que es podien obtenir mitjançant dos codis de barra d'IBM, Delta-A i Delta-B. Al febrer de 1971, Baumeister es va unir a Laurer.
A mitjans de 1971, William "Bill" Crouse va inventar un nou codi de barres anomenat Delta-C. Va aconseguir quatre vegades els caràcters per polzada que Delta-B. Delta-B va comparar els amples de barra amb l'ample de l'espai per a codificar els bits. Això era extremadament sensible a l'extensió de la tinta on massa tinta o pressió causarien que totes dues vores d'una barra s'estenguessin cap a fora i massa poc per a fer que s'encongissin. Per a empitjorar les coses, els espais de barres es reduïen i viceversa. Delta-C va aconseguir el major rendiment en usar únicament vores d'entrada o de sortida de tal forma que no es veien veure afectats per la dispersió uniforme de la tinta. El codi proporcionava el millor rendiment quan tenia un joc de caràcters definit a una distància de referència fixa que abastava la majoria o preferiblement tot el caràcter. A l'agost de 1971, Crouse es va unir a l'esforç de l'escàner. Després de diversos mesos, no van progressar. Estaven al corrent de l'etiqueta d'ull de bou de RCA que es podia escanejar amb un escàner làser de línia recta simple, però l'etiqueta llegible era massa grossa. Encara que Litton Industries va proposar un símbol d'ull de bou tallat a la meitat per a reduir l'àrea, continuava sent massa grossa i presentava els mateixos problemes d'impressió de tinta que el símbol RCA. La redundància i la capacitat de comprovació es van eliminar per complet. També coneixien les nombroses propostes de tot el món, cap de les quals era factible.
En la primavera de 1972, Baumeister va anunciar un gran avanç. Va proposar una etiqueta amb barres que eren una mica més llargues que la distància en totes les barres que necessitaven llegir-se en una sola passada. Aquesta etiqueta es podia escanejar amb un simple escàner "X", només una mica més complex que l'escàner làser de línia recta. L'endemà, Baumeister va suggerir que si l'etiqueta es dividia en dues meitats, la longitud de les barres podria reduir-se gairebé a la meitat. Aquestes dues propostes van reduir l'àrea de l'ull de bou en un terç i després en un sisè. La imatge a la dreta mostra l'etiqueta proposada per Baumeister. Ell no va especificar cap codi de barres específic, ja que això s'entenia bé. Excepte per la codificació de barres i els deu dígits, l'etiqueta d'UPC avui és la seva proposta. Poc després, Baumeister es va transferir a una altra àrea de RTP.
Laurer va procedir a definir els detalls de l'etiqueta i a escriure una proposta. N.J. Woodland va ser assignat com a planificador per al projecte i va ajudar a Laurer a escriure la seva proposta.
El primer intent de Laurer amb un codi de barres va usar Delta-B. La grandària resultant de l'etiqueta era aproximadament 15,2 cm per 7,6 cm, que era massa grossa. Crouse va suggerir que Laurer usés el seu codi de barres Delta-C i va proporcionar una còpia de la seva patent que tenia un conjunt de caràcters alfanumèrics de mostreig i regles per a generar alfabets d'altres mides. Això va reduir la mida de l'etiqueta a aproximadament 3,8 cm per 2,3 cm. Més tard, Laurer va demanar ajuda a Crouse sobre com l'escàner podria detectar una etiqueta. Junts van definir barres de protecció i una definició de com detectar l'etiqueta. Les barres de protecció també van proporcionar identificació per a la meitat de la discriminació d'etiquetes i barres d'entrenament per als circuits de llindar de l'escàner. Laurer tenia una definició d'etiqueta completa i va procedir a escriure la seva proposta.
Anteriorment, Crouse tenia una idea per a una vareta simple que s'usava com un anell i una polsera. Va decidir desenvolupar aquesta vareta per a fer una demostració de l'etiqueta.
L'1 de desembre de 1972, IBM va presentar la proposta de Laurer al Comitè de Supermercats en Rochester, Minnesota, la ubicació on IBM desenvoluparia l'escàner. Durant la presentació, Crouse va realitzar una demostració de laboratori en la qual va llegir etiquetes tipus UPC amb la seva vareta màgica. A més de llegir les etiquetes normals, va llegir l'etiqueta grossa de dues pàgines en el fullet de la proposta. Després va passar a una pàgina que mostrava una foto d'articles etiquetats. Les etiquetes eren petites i defectuoses a causa de la resolució de la foto impresa, però la vareta va llegir moltes d'elles. Aquesta demostració va mostrar la solidesa del codi Delta-C pur. Finalment la proposta va ser acceptada.
Un mes després, l'1 de gener de 1973, Crouse es va transferir novament al grup de Tecnologia Avançada d'IBM i Laurer es va quedar amb la plena responsabilitat de l'etiqueta.
Dymo Industries, fabricants de dispositius d'impressió portàtils, va insistir que el codi havia de ser independent del caràcter, de manera que els dispositius d'impressió poguessin imprimir el codi de barres a la botiga si els articles no en tenien de codis de barres en origen. La proposta de Dymo va ser acceptada per IBM i incorporada en l'última proposta d'IBM.
Es va decidir que les dues meitats de l'etiqueta haurien de tenir un conjunt diferent de caràcters numèrics. El conjunt de caràcters Laurer derivat de la patent Delta-C va utilitzar set increments o unitats imprimibles en els quals s'imprimirien dues barres i dos espais. Això va produir vint combinacions de caràcters, però va haver-hi dos parells que, quan van ser llegits per les regles de Delta-C, van llançar el mateix codi pel parell. Com divuit caràcters no eren suficients, Laurer va intentar agregar una unitat al joc de caràcters. Això va produir vint-i-sis caràcters de Delta-C que podrien proporcionar els dos conjunts de caràcters decimals però també va fer augmentar un catorze per cent de l'ample de l'etiqueta i, per tant, l'altura. Això seria un augment del trenta per cent en l'àrea o una etiqueta de 4,3 cm x 2,6 cm. Laurer va veure que això no era acceptable. Va tornar al joc de caràcters original amb vint caràcters, però quatre d'ells eren dos parells amb la mateixa lectura de Delta-C. Va decidir usar-los a tots. Per distingir els parells, mesuraria un ample de barra en cadascun dels parells. Per a cada parell, aquestes barres tindrien una o dues unitats d'ample. Laurer no va aplicar les equacions de Baumeister a aquest conjunt. Va pensar que només un mesurament d'ample de barra no seria massa seriosa. Va resultar que hauria requerit més del cinquanta per cent d'increment en ample i alt per a un increment d'àrea de més del doble. Passat un temps, Laurer va admetre que aquests quatre caràcters en cada conjunt eren els responsables de la majoria dels errors de lectura de l'escàner.
Al matemàtic David Savir, que molt probablement no coneixia les equacions de Baumeister, se li va donar la tasca de provar que el símbol podia imprimir-se i que compliria amb els requisits de confiabilitat. Per a la correcció d'errors i la detecció, ell i Laurer van agregar dos dígits. Després van decidir agregar la paritat senar/parell a la quantitat d'unitats plenes de barres en cada costat. La paritat senar/parell és una tècnica utilitzada per a detectar qualsevol quantitat senar d'errors de bit en un flux de bits. Van decidir utilitzar senar en una meitat i parell a l'altra. Això proporcionaria una indicació addicional de quina mitja butlleta s'estava llegint. Això significava que cada amplada de barra s'havia de llegir amb precisió per proporcionar una bona lectura. També significava que tots els espais també serien coneguts. Exigir que es llegís l'ample de tots els bits, bàsicament va anul·lar l'avantatge de Delta-C, excepte per al mesurament de referència Delta-C. Només l'estrany conjunt de caràcters i la grandària de l'etiqueta romanen com una ombra del codi Delta-C. La grandària encara era el calculat per a Delta-C pur. Si la grandària de l'etiqueta s'hagués recalculat correctament, tenint en compte les mesures d'ample de barra requerides, l'etiqueta hauria estat massa grossa per a ser acceptable.
L'enginyeria mecànica i el disseny de circuits electrònics normalment requereixen dissenys amb toleràncies conegudes en el pitjor dels casos. Molts enginyers que treballaven amb codis de barres tenien poca experiència en aquest camp i usaven mètodes una mica intuïtius. Aquesta va ser la causa del baix rendiment del codi Delta-B i molt probablement de la fallada de l'escàner d'ull de bou de RCA.
La següent taula mostra les etiquetes viables, disponibles a principis de la dècada de 1970, amb les mides respectives (“in” = polzada):
| Tipus d'etiqueta | Dimensions d'etiqueta (polzades) | Àrea (polzades) |
| Ull de bou amb codi Morse | Grossa | Grossa |
| Ull de bou amb Delta-B | 12.0 in (300 mm) diàmetre | 113.10 in$^2$ (729.7 cm$^2$) |
| Ull de bou amb Delta-A | 9.0 in (230 mm) diàmetre | 63.62 in$^2$ (410.5 cm$^2$) |
| Baumeister 1r. amb Delta-B | 6.0 in × 5.8 in (150 mm × 150 mm) | 34.80 in$^2$ (224.5 cm$^2$) |
| Baumeister 2 meitats amb Delta-B | 6.0 in × 3.0 in (152 mm × 76 mm) | 18.00 in$^2$ (116.1 cm$^2$). |
| Baumeister 2 meitats amb Delta-A | 4.5 in × 2.3 in (114 mm × 58 mm) | 10.35 in$^2$ (66.8 cm$^2$) |
| Baumeister amb Delta-C | 1.5 in × 0.9 in (38 mm × 23 mm) | 1.35 in$^2$ (8.7 cm$^2$) |
Això és suposant una etiqueta ull de bou amb la mateixa informació i una llegibilitat fiable.

## Composició

Cada codi de barres UPC-A consisteix en una franja escanejable de barres negres i espais en blanc sobre una seqüència de 12 dígits numèrics. No poden aparèixer lletres, caràcters o un altre contingut de cap mena en un codi de barres UPC-A. Hi ha una correspondència d'un a un entre el número de 12 dígits i la tira de barres negres i espais en blanc, és a dir, només hi ha una manera de representar visualment cada número de 12 dígits i només hi ha una manera de representar numèricament cada banda de barres negres i espais en blanc.
L'àrea escanejable de cada codi de barres UPC-A segueix el patró SLLLLLLMRRRRRRE, on els patrons de protecció S (inici), M (mig) i E (final) es representen de la mateixa manera en cada codi de barres UPC-A i en l'esquerra (L) les seccions R (dreta) representen col·lectivament els 12 dígits numèrics que fan que cada UPC-A sigui únic. El primer dígit L indica un sistema numèric particular per a ser utilitzat pels següents dígits. L'últim dígit R és un codi de control de detecció d'errors que permet detectar alguns errors en l'escaneig o l'entrada manual. Els patrons de guarda separen els dos grups de sis dígits numèrics i estableixen el temps.
| UPC-A | UPC-E |
Nota: UPC-A 042100005264 és equivalent a UPC-E 425261 amb el patró de paritat "EOEEOO", que es defineix mitjançant el sistema de numeració UPC-A 0 i el dígit de control 4 d'UPC-A.

### Formatació

Els codis de barres UPC-A se poden imprimir en diverses densitats per a adaptar-se a una varietat de processos d'impressió i escaneig. El paràmetre dimensional significatiu es denomina dimensió X (ample de l'element de mòdul individual). L'ample de cada barra (espai) es determina multiplicant la dimensió X y l'ample del mòdul (1, 2, 3 o 4 unitats) de cada barra (espai). Atès que els patrons de protecció inclouen dues barres i cadascun dels 12 dígits del codi de barres UPC-A consta de dues barres i dos espais, tots els codis de barres d'UPC-A consisteixen exactament (3 × 2) + (12 × 2) = 30 barres, de les quals 6 representen patrons de guarda i 24 representen dígits numèrics.
La dimensió X per a l'UPC-A en la grandària nominal és de 0,33 mm (0,013 "). L'altura nominal del símbol per a UPC-A és de 25,9 mm (1,02"). Les barres que formen els patrons de protecció S (inici), M (mig) i E (extrem) s'estenen cap avall 5 vegades la dimensió X amb una altura de símbol nominal resultant de 27.55 mm (1.08 "). Això també s'aplica a les barres del primer i últim dígit numèric del codi de barres de l'UPC-A. UPC-A pot reduir-se o magnificar-se entre 80% i 200%.
En cada costat de l'àrea escanejable del codi de barres UPC-A ha d'estar present una zona en blanc amb un ample d'almenys 9 vegades la dimensió X. Per a un número GTIN-12 codificat en un codi de barres UPC-A, els primers i últims dígits es col·loquen sempre fora del símbol per a indicar les zones en blanc que són necessàries perquè els escàners de codis de barres funcionin correctament.

### Codificació

Visualment el codi de barres UPC-A es representa mitjançant tires de barres i espais que codifiquen el número UPC de 12 dígits. Cada dígit està representat per un patró únic de 2 barres i 2 espais. Les barres i els espais són d'ample variable, és a dir, 1, 2, 3 o 4 mòduls d'ample. L'ample total per a un dígit és sempre 7 mòduls; en conseqüència, el número UPC de 12 dígits requereix un total de 7 × 12 = 84 mòduls.
Un UPC-A complet té 95 mòduls d'ample: 84 mòduls per als dígits (seccions L i R) combinats amb 11 mòduls per als patrons de protecció S (inici), M (mig) i E (final). Els patrons de protecció S (inici) i E (final) tenen 3 mòduls d'ample i utilitzen el patró barra-espai-barra on cada barra i espai té un ample d'un mòdul. El patró de guarda M (mig) té 5 mòduls d'ample i utilitza el patró espai-barra-espai-barra-espai on cada barra i espai també té un ample d'un mòdul. A més, un símbol UPC-A requereix una zona en blanc (espai addicional de 9 mòduls d'ample) abans dels patrons de protecció S (inici) i després de E (final).
Taula de codificació del patró de codi de barres UPC-A SLLLLLLMRRRRRRE :
| Zona en blanc | S (inici) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | L (dígit numèric esquerra) | M (mig) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | R (dígit numèric dreta) | E (final) | Zona en blanc |
| Zona en blanc | S (inici) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | M (mig) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | E (final) | Zona en blanc |
Els dígits del costat esquerre de l'UPC-A (els dígits a l'esquerra del patró de protecció M (mig) tenen una paritat senars, la qual cosa significa que l'ample total de les barres negres és un nombre senar de mòduls. Per contra, els dígits del costat dret tenen paritat parell. En conseqüència, un escàner UPC pot determinar si està escanejant un símbol d'esquerra a dreta o de dreta a esquerra (el símbol està a l'inrevés). Després de veure un patró de protecció S (inici) o E (final) (són el mateix, barra-espai-barra, qualsevol que sigui la direcció en què es llegeixen), l'escàner veurà primer dígits senars de paritat, si està escanejant d'esquerra a dreta, o fins i tot dígits de paritat, si escaneja de dreta a esquerra. Amb la informació de paritat/direcció, un símbol a l'inrevés no confondrà l'escàner. Quan s'enfronta amb un símbol a l'inrevés, l'escàner simplement pot ignorar-lo (molts escàners alternen escanejos d'esquerra a dreta i de dreta a esquerra, per la qual cosa llegiran el símbol en una passada posterior) o reconèixer els dígits i posar-los en l'ordre correcte. Hi ha una altra propietat en la codificació de dígits. Els dígits del costat dret són l'invers òptic dels dígits del costat esquerre, és a dir, les barres negres es converteixen en espais en blanc i viceversa. Per exemple, el costat esquerre "4" és espai×1 - barra×1 - espai×3 - barra×2, mentre que el costat dret "4" és barra×1 - espai×1 - barra×3 - espai×2.

### Numeració

La quantitat de codis de barres UPC-A i UPC-E està limitada pels estàndards utilitzats per a crear-los.
UPC-A ${\begin{aligned}{\text{(valors possibles per dígit esquerre)}}^{\text{(dígits esquerra)}}&\times {\text{(valors possibles per dígit dret)}}^{\text{(5 dígits dreta)}}\\=10^{6}&\times 10^{5}=100,000,000,000\end{aligned}}$

#### UPC-E

    ${\begin{aligned}{\text{(valors possibles per dígit)}}^{\text{(dígits)}}&\times {\text{(possibles patrons de paritat per número UPC-E)}}\\=10^{6}&\times 2=2,000,000\end{aligned}}$

### Número del sistema numèric

A continuació s'inclou una descripció de tots els sistemes de números possibles amb el corresponent esquema de numeració UPC-A de 12 dígits LLLLLLRRRRRR, on L indica el dígit del sistema numèric i el dígit de control R:

#### 0–1, 6–9

    Per a la majoria dels productes. Els dígits LLLLL són el codi del fabricant (assignat per l'organització local GS1) i els dígits RRRRR són el codi del producte.

#### 2

    Reservat per a ús local (magatzem/dipòsit) per a articles venuts per pes variable. Als articles de pes variable, com a carns, fruites fresques o vegetals, se'ls assigna un número d'article a la botiga, si estan empacats allí. En aquest cas, LLLLL és el número d'article i RRRRR és el pes o el preu, i el primer R determina què (0 per al pes).

#### 3

    Medicaments segons el Codi Nacional de Fàrmacs (NDC). Els productes farmacèutics als EE. UU usen els 10 dígits centrals de la UPC com el número NDC. Encara que generalment només s'analitzen medicaments de venda lliure en el punt de venda, els UPC basats en NDC s'usen en paquets de medicaments receptats i productes quirúrgics i, en aquest cas, comunament se'ls denomina codis UPN.

#### 4

    Reservat per a ús local (magatzem/dipòsit), sovint per a targetes de fidelitat o cupons de botigues.

#### 5

    Cupons. Els dígits LLLLL són el codi del fabricant, els primers tres RRR són un codi familiar (establert pel fabricant) i els dos RR següents són un codi del cupó, que determina la suma del descompte. Aquests cupons es poden duplicar o triplicar.

### Càlcul de Dígit Verificador

El codi UPC inclou un dígit de verificació per detectar errors habituals d'entrada de dades. Per exemple, els codis UPC-A trien el dígit de verificació $x_{12}$ per satisfer l'equació del dígit de verificació:
    $(3x_{1}+x_{2}+3x_{3}+x_{4}+3x_{5}+x_{6}+3x_{7}+x_{8}+3x_{9}+x_{10}+3x_{11}+x_{12})\equiv 0{\pmod {10}}.$
Si un codi introduït no compleix l'equació, no és un codi UPC-A vàlid.
El dígit de verificació UPC-A es pot calcular de la següent manera:
* Sumi els dígits en posicions senars (primer, tercer, cinquè, ..., onzè).
* Multipliqui el resultat per 3.
* Agregui la suma del dígit en les posicions parells (segon, quart, sisè, ..., dècim) al resultat.
* Trobi el resultat mòdul 10 (és a dir, la resta, quan es divideix per 10) i anomeni'l M.
* Si M és zero, llavors el dígit de control és 0; en cas contrari el dígit de control és 10 − M 10 − M 10 − M.
Per exemple, en un codi de barres UPC-A "03600029145x$_{12}$", on x$_{12}$ és el dígit de control desconegut, x$_{12}$ pot calcular-se mitjançant:
* Sumi els dígits senars (0 + 6 + 0 + 2 + 1 + 5 = 14).
* Multipliqui el resultat per 3 (14 × 3 = 42).
* Agregui els dígits parells (42 + (3 + 0 + 0 + 9 + 4) = 58).
* Trobi el resultat mòdul 10 (58 mod 10 = 8 = M).
* Si M no és 0, resti M de 10 (10 − 10 − M = 10 − 8 = 2 = 10 − M = 10 − 8 = 2 10 − M = 10 − 8 = 2 8 = 2).
Per tant, el dígit de verificació de x$_{12}$ és 2.
L'equació del dígit de verificació se selecciona per a tenir propietats raonables de detecció d'errors (vegeu algorisme de Luhn).
* UPC-A pot detectar el 100% dels errors d'un sol dígit.
    Un error d'un sol dígit significa que exactament un dígit és incorrecte. Sigui d la diferència mòdul 10 del dígit erroni i el dígit correcte. El valor de d no pot ser zero perquè això significa que els dígits són els mateixos, però d pot ser qualsevol altre valor en {1, 2, 3, 4, 5, 6, 7, 8, 9}. Si el dígit d'error és en una posició senar (pes 1), el costat esquerre de l'equació del dígit de control canvia per d i l'equivalència ja no és zero. Si el dígit d'error és en una posició parell (pes 3), llavors el costat esquerre canvia en 3d, però aquest canvi també és un mòdul 10 diferent de zero, per la qual cosa l'equació del dígit de verificació no es compleix.
* UPC-A pot detectar aproximadament el 89% dels errors de transposició. Específicament, sí i només sí la diferència entre dos dígits adjacents és 5, l'UPC-A no pot detectar la seva transposició.
* # Si es transposen 2 dígits contigus, un dels dígits a serà ponderat per 1 i l'altre dígit b = a + d es ponderarà per 3, on d és la diferència entre els dos dígits. Si els dígits estiguessin en l'ordre correcte, contribuirien
* #::$1a+3b=1a+3(a+d)=4a+3d$
* #:al costat esquerre de l'equació del dígit de verificació. En l'ordre transposat, contribueixen
* #::$1b+3a=3a+1(a+d)=4a+d$.
* #: a l'LHS. Restar les dues contribucions dona quant canvien l'LHS
* #::$(4a+3d)-(4a+d)=2d$
* #: Es detectarà un error sempre que el canvi modular sigui diferent de zero; si 2d ≡ 0 mòdul 10, llavors el canvi no serà detectat. En conseqüència, només quan la diferència d ≡ 5 no es detecti un error (quan d ≡ 0 la "transposició" degenerada no és un error).
* # A continuació, consideri amb quina freqüència una transposició té una distancia d de 5.
             Aquí teniu la Taula de transposicions d per a codis de barres UPC-A, on $d\in \{0,1,2,\ldots ,9\}:$
             Taula de transposicions d per a codis de barres UPC-A d N° 0123456789 1 0 00 10 20 30 40 50 60 70 80 9 2 1 11 21 31 41 51 61 71 81 9 3 2 22 32 42 52 62 72 82 9 4 3 33 43 53 63 73 83 9 5 4 44 54 64 74 84 9 6 5 55 65 75 85 9 7 6 66 76 86 9 8 7 77 87 9 9 8 88 9 10 9 9 Suma 1018161412108642
             La fila "Suma" conté el nombre de transposicions d, per tant, la proporció d'errors de transposició no detectables és (ignorant les transposicions on d = 0):
                ${\frac {10}{18+16+14+12+10+8+6+4+2}}={\frac {10}{90}}=11.111\ldots \%.$

## Variacions

UPC en el seu ús més comú tècnicament es refereix a UPC-A.
Existeixen altres variants de la codificació UPC:
* UPC-B és una versió de 12 dígits de la UPC sense dígits de control, desenvolupada per al Codi nacional de medicaments (NDC) i el Codi nacional d'articles relacionats amb la salut. Té 11 dígits més un codi de producte d'1 dígit i no és d'ús comú.
* UPC-C és un codi de 12 dígits amb un codi de producte i un dígit de control; no és d'ús comú.
* UPC-D és un codi de longitud variable (12 dígits o més) amb el dígit 12 com el dígit de verificació. Aquestes versions no són d'ús comú.
* UPC-E és un codi de 6 dígits que té el seu equivalent en UPC-A codi de 12 dígits amb sistema numèric 0 o 1.
* UPC-2 és un suplement de 2 dígits de la UPC utilitzat per a indicar l'edició d'una revista o publicació periòdica.
* UPC-5 és un suplement de 5 dígits de l'UPC que s'utilitza per a indicar el preu minorista suggerit per als llibres.
A mesura que la UPC es torna tecnològicament obsoleta, s'espera que UPC-B i UPC-C desapareguin de l'ús comú. L'estàndard UPC-D podria modificar-se en EAN 2.0 o eliminar-se per complet.

### UPC-E

Per a permetre l'ús de codis de barres UPC en paquets més petits on un codi de barres complet de 12 dígits pot no encabir, es va desenvolupar una versió d'UPC "suprimida per zero", anomenada UPC-E, en la qual el dígit del sistema numèric, tots els zeros finals en el codi del fabricador i tots els zeros a l'esquerra en el codi del producte se suprimeixen (s'ometen). Aquesta simbologia difereix d'UPC-A en què només usa un codi de 6 dígits, no usa un patró de guarda M (mig) i el patró de guarda E (final) està format com a espai-barra-espai-barra-espai-barra-espai, és a dir, el codi de barres UPC-E segueix el patró SDDDDDDE. La forma en què un UPC-E de 6 dígits es relaciona amb un UPC-A de 12 dígits es determina mitjançant el patró numèric UPC-E i el patró de paritat UPC-E. Només pot correspondre al sistema numèric d'UPC-A 0 o 1, el valor del qual, juntament amb el dígit de control UPC-A, determina el patró de paritat UPC-E de la codificació. Amb els dígits del codi del fabricant representats per X i els dígits del codi del producte per N, llavors:
| Últim dígit UPC-E | Patró numèric UPC-E | Equivalent UPC-A | Nombre de producte disponibles |
| 0 | MMPPP0 | 0 o 1 + MM000-00PPP + dígit de control | PPP = 000-999 |
| 1 | MMPPP1 | 0 o 1 + MM100-00PPP + dígit de control | PPP = 000-999 |
| 2 | MMPPP2 | 0 o 1 + MM200-00PPP + dígit de control | PPP = 000-999 |
| 3 | MMMPP3 | 0 o 1 + MMM00-000PP + dígit de control | PP = 00-99 |
| 4 | MMMMP4 | 0 o 1 + MMMM0-0000P + dígit de control | P = 0-9 |
| 5 | MMMMM5 | 0 o 1 + MMMMM-00005 + dígit de control | 5 = P |
| 6 | MMMMM6 | 0 o 1 + MMMMM-00006 + dígit de control | 6 = P |
| 7 | MMMMM7 | 0 o 1 + MMMMM-00007 + dígit de control | 7 = P |
| 8 | MMMMM8 | 0 o 1 + MMMMM-00008 + dígit de control | 8 = P |
| 9 | MMMMM9 | 0 o 1 + MMMMM-00009 + dígit de control | 9 = P |
Per exemple, un UPC-E 654321 pot correspondre a un UPC-A 065100004327 o 165100004324, depenent del patró de paritat UPC-E dels dígits codificats, com es descriu a continuació:
| Dígit de control UPC-A | Patró de paritat UPC-E per a UPC-A sistema numèric 0 | Patró de paritat UPC-E per a UPC-A sistema numèric 1 |
| 0 | EEEOOO | OOOEEE |
| 1 | EEOEOO | OOEOEE |
| 2 | EEOOEO | OOEEOE |
| 3 | EEOOOE | OOEEEO |
| 4 | EOEEOO | OEOOEE |
| 5 | EOOEEO | OEEOOE |
| 6 | EOOOEE | OEEEOO |
| 7 | EOEOEO | OEOEOE |
| 8 | EOEOOE | OEOEEO |
| 9 | EOOEOE | OEEOEO |
Taula de codificació per al patró de codi de barres UPC-E SDDDDDDE :
| S (inici) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | O (dígit de paritat senar) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (dígit de paritat parell) | E (final) |
| S (inici) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | E (final) |
| | 3-2-1-1 | 2-2-2-1 | 2-1-2-2 | 1-4-1-1 | 1-1-3-2 | 1-2-3-1 | 1-1-1-4 | 1-3-1-2 | 1-2-1-3 | 3-1-1-2 | 1-1-2-3 | 1-2-2-2 | 2-2-1-2 | 1-1-4-1 | 2-3-1-1 | 1-3-2-1 | 4-1-1-1 | 2-1-3-1 | 3-1-2-1 | 2-1-1-3 | |
UPC-E 654321 amb patró de paritat "EOEOEO" (UPC-A 065100004327) es codificaria com:
1-1-1 4-1-1-1 1-2-3-1 2-3-1-1 1-4-1-1 2-2-1-2 2-2-2-1 1-1-1-1-1-1
Un codi de barres UPC-E es veuria així:

### EAN-13

L'EAN-13 va ser desenvolupat com un subconjunt d'UPC-A, agregant-hi un dígit extra al començament de cada número UPC-A. Això va ampliar el nombre de valors únics teòricament possibles en deu vegades, fins a 1 bilió. Els codis de barres EAN-13 també indiquen el país on es troba l'empresa que ven el producte (que pot ser o no el mateix que el país on es fabrica el bé). Els tres dígits principals del codi determinen això, segons els codis de país GS1. Cada codi UPC-A es pot convertir fàcilment al codi EAN-13 equivalent en anteposar el dígit “0” al codi UPC-A. Això no canvia el dígit de control. Tots els sistemes de punt de venda ara poden entendre tots dos per igual.
EAN-8 és una variació de 8 dígits del codi de barres EAN.
Notes d'ús d'UPC:
* Tots els productes marcats amb un codi EAN actualment són acceptats a Amèrica del Nord tot i que ja estan marcats amb un UPC.
* Els productes amb una UPC existent no s'han de tornar a marcar amb un EAN.
* A Amèrica del Nord, l'EAN afegeix un 30% més de codis, principalment afegint els dígits del 10 al 12 als dígits de la UPC del 00 al 09. Aquest és un poderós incentiu per eliminar gradualment l'UPC.

## Vegeu també

* GS1 – Organització d'estàndards de la cadena de subministrament internacional
* On Demand Code Arxivat 2019-05-20 a Wayback Machine.
* Diferències entre el codi universal vs SKU

## Bibliografia addicional

* Bilgutay, Ilhan M., "Bar Code Font", US 3832686, publicada 11 maig 1972, emesa 27 agost 1974
* Brainerd, H. B., "Identification System", US 3145291, publicada 2 juliol 1959, emesa 18 abril 1964
* Shields, Charles B. & Roelif Stapelfeldt, "Automatic car identification system", US 3617707, publicada 17 agost 1967, emesa 2 novembre 1971
* Crouse, William G. & John E. Jones, "Method and Device for Reading and Decoding a High Density Self-Clocking Bar Code", US 3723710, publicada 28 juny 1971, emesa 27 març 1973

## Referències

* ↑ «GS1 US > RESOURCES > Standards > EAN/UPC visuals». gs1us.org. Arxivat de l'original el 7 de enero de 2012. [Consulta: 17 juliol 2018].
* ↑ «A Brief History of the Bar Code». Esquire, 153, 3, 3-2010, pàg. 42.
* ↑ «Our history - Careers - McKinsey & Company». mckinsey.com. Arxivat de l'original el 8 de julio de 2014. [Consulta: 17 juliol 2018].
* ↑ Alfred, Randy, "June 26, 1974: By Gum! There's a New Way to Buy Gum" Arxivat August 24, 2010$^{[Datemismatch]}$, a Wayback Machine. Wired magazine 06.26.08
* ↑ Scanning Species, Harvard Magazine, September - October 2005
* ↑ «UPC - The Transformation of Retail». [Consulta: 28 abril 2016].
* ↑ «Alumni Hall Of Fame Members». University of Maryland Alumni Association. The University of Maryland. Arxivat de l'original el 23 de junio de 2007. [Consulta: 10 juny 2009].
* ↑ «Drawing UPC-A Barcodes with C#». codeproject.com, 06-04-2005.
* ↑ «UPC Symbol Specification Manual».
* ↑ «Barcodes for Pharmaceuticals and Surgical Products».
* ↑ «NHRIC (National Health Related Items Code)». HealthData. U.S. Department of Health & Human Services. Arxivat de l'original el 8 de marzo de 2021. [Consulta: 17 juliol 2018].
* ↑ «Copia archivada». Arxivat de l'original el 30 de enero de 2017. [Consulta: 17 juliol 2018].
* ↑ «UPC-E Symbology». Arxivat de l'original el 26 de febrero de 2020. [Consulta: 21 enero 2013].

## Enllaços externs

* Història de codis d'identificació
* Upc-search.org Base de dades en línia gratuïta d'UPC
* Codi de barres Codi Universal de Productes. Tot el que n'has de saber.