Un opcode identifica quale operazione di base del computer deve essere eseguita nel set di istruzioni. Viene utilizzato quando si scrive il codice macchina. Dice al computer di fare qualcosa. Ogni istruzione di linguaggio macchina ha tipicamente sia un opcode che degli operandi. L'opcode è come un verbo in una frase, e gli operandi sono come il soggetto in una frase. Gli operandi sono tipicamente indirizzi di memoria o di registro.
Gli opcode sono utilizzati in codice macchina per una serie di funzioni, tra cui Float Addition of registers, Two's compliment addition of registers, Shifting register values to memory, o su un disco rigido, l'arresto di un programma, ecc. Ci sono letteralmente centinaia di opcode comuni utilizzati nei computer moderni.
A causa della natura dell'architettura di un computer, gli opcodici assumono la forma di numeri binari. In alternativa, gli opcodici possono essere rappresentati da cifre esadecimali, (ad esempio, 10100101 = A5) per facilitare la lettura e la codifica quando si progetta o si emula un programma di codice macchina. Questi valori vengono poi trasformati nei loro equivalenti binari per essere salvati. Gli opcode moderni sono lunghi almeno due caratteri esadecimali che occupano 1 byte di spazio di memorizzazione.
Gli opcodici variano in capacità e "valore" a seconda del computer a cui appartengono, in quanto dipendono dall'hardware. Per esempio, l'opcode per STORE come espresso in Hex potrebbe essere FA per una macchina e 02 per un'altra. Alcuni opcode non saranno disponibili su alcuni computer. In generale, ci sono due approcci per costruire set di istruzioni. Un computer con set di istruzioni ridotto (RISC) offre meno opcodici possibili a favore di una maggiore velocità per processi semplici. Un set di istruzioni complesse Computing (CISC) offre più opcodici a favore dell'aumento della velocità per processi complessi.
Gli opcode sono raramente utilizzati direttamente dai programmatori. Ogni volta che vengono programmati direttamente in memoria, è garantito che funzionino solo sul computer per cui sono stati progettati. Quando i programmatori scrivono in linguaggio assembly, un programma di traduzione converte le istruzioni del programma, uno per uno, in comandi in linguaggio macchina. Il programmatore deve ricordare solo un mnemonico per ogni opcode invece del suo valore binario. In alternativa, si può usare un linguaggio di programmazione di alto livello, diciamo di 4a generazione, che viene convertito alla 3a generazione e così via fino a raggiungere la 1a generazione. Da qui, un singolo computer convertirà il programma in codice macchina ogni volta che il file di programma viene letto. In questo modo, un programma può funzionare su una varietà di computer molto più ampia.