Un opcode identifică operația de bază a calculatorului din setul de instrucțiuni care trebuie efectuată. Acesta este utilizat la scrierea codului mașină. Acesta îi spune calculatorului să facă ceva. Fiecare instrucțiune în limbaj mașină are, de obicei, atât un cod operațional, cât și operanzi. Codul operațional este ca un verb într-o propoziție, iar operanzii sunt ca subiectul într-o propoziție. Operanzii sunt, de obicei, adrese de memorie sau de registru.
Codurile operaționale sunt utilizate în codul mașină pentru o serie de funcții, inclusiv adunarea flotantă a registrelor, adunarea complementară a registrelor în doi, transferul valorilor registrelor în memorie sau pe un hard disk, oprirea unui program etc. Există literalmente sute de coduri operaționale comune utilizate în calculatoarele moderne.
Din cauza naturii arhitecturii unui calculator, codurile operaționale iau forma unor numere binare. Alternativ, codurile operaționale pot fi reprezentate prin cifre hexazecimale, (de exemplu, 10100101 = A5) pentru a facilita citirea și codificarea atunci când se proiectează sau se emulează un program de cod mașină. Aceste valori sunt apoi transformate în echivalentele lor binare pentru a fi salvate. Codurile operaționale moderne au o lungime de cel puțin două caractere hexagonale care ocupă 1 octet de spațiu de stocare.
Capacitatea și "valoarea" codurilor operaționale variază în funcție de computerul căruia îi aparțin, deoarece acestea depind de hardware. De exemplu, codul operațional pentru STORE, exprimat în hexagonal, poate fi FA pentru o mașină și 02 pentru alta. Unele coduri operaționale nu vor fi disponibile pe anumite calculatoare. În general, există două abordări pentru construirea seturilor de instrucțiuni. Un calculator cu set redus de instrucțiuni (RISC) oferă mai puține coduri operaționale posibile în favoarea creșterii vitezei pentru procese simple. Un calculator cu set de instrucțiuni complexe (CISC) oferă mai multe coduri operaționale în favoarea creșterii vitezei pentru procesele complexe.
Codurile operaționale sunt rareori folosite direct de programatori. Ori de câte ori sunt programate direct în memorie, acestea sunt garantate să funcționeze doar pe calculatorul pentru care au fost proiectate. Atunci când programatorii scriu în limbaj de asamblare, un program traducător convertește declarațiile de program, una câte una, în comenzi în limbaj de mașină. Programatorul trebuie să rețină doar un mnemonic pentru fiecare cod operațional în loc de valoarea sa binară. Alternativ, se poate utiliza un limbaj de programare de nivel înalt, de exemplu, de generația a 4-a, care este convertit în generația a 3-a și așa mai departe până când ajunge la generația 1. De aici, un calculator individual va converti programul în cod mașină ori de câte ori este citit fișierul de program. În acest fel, un program poate funcționa pe o varietate mult mai mare de calculatoare.