integer
integer nei linguaggi di programmazione, termine che indica un particolare tipo di dato numerico che definisce un sottoinsieme finito di Z, contenente gli interi relativi compresi tra il più piccolo e il più grande numero rappresentabile dalla macchina. Questi numeri, minimo e massimo, dipendono dalla particolare implementazione adottata. Se si indica il massimo numero integer con maxint, il più piccolo dovrebbe essere il suo opposto, ma poiché nell’insieme è compreso anche 0, i numeri integer sono compresi nell’intervallo di estremi (−maxint +1) e maxint. Tra gli elementi di tipo integer, o come si usa dire in ambiente integer, sono definite le operazioni di addizione, moltiplicazione, sottrazione e di divisione intera, indicata con div. È anche ammessa l’operazione, indicata con mod, che, dati due elementi, dà come risultato il resto della divisione intera del primo per il secondo. Poiché integer è un insieme di calcolo finito, è possibile che, operando con i suoi elementi, il risultato del calcolo sia maggiore del massimo o minore del minimo: in tal caso si ha una situazione di errore, chiamata overflow che significa «straripamento» (→ aritmetica finita (di macchina)). Per esempio, si supponga di operare con un automa esecutore che accetta numeri di tipo integer aventi al più tre cifre e che si voglia sapere se sia possibile o meno eseguire i seguenti calcoli:
a) 999 + 1
b) 750 + (300 + (−200))
c) (750 + 300) + (−200)
Nel caso a) si ha una situazione di overflow perché il risultato 1000 ha 4 cifre; nel caso b) l’automa calcola il risultato 850, mentre nel caso c) l’automa non può calcolare il risultato, che pur avrebbe tre cifre, perché la prima addizione produce una situazione di overflow. Nell’ambiente integer non vale inoltre la proprietà associativa dell’addizione (né quella della moltiplicazione), come si verifica osservando che, per esempio, nel precedente caso c) si produrrebbe il risultato associando le operazioni in modo diverso: 750 + (300 + (−200)). È semplice verificare che anche la proprietà distributiva della moltiplicazione rispetto all’addizione non vale in tale ambiente. Le proprietà delle operazioni non hanno valore generale operando con tale insieme perché valgono solo se si presta attenzione a ottenere risultati, anche parziali, che siano distanti dagli estremi di tale insieme numerico. Tra numeri integer sono definite le seguenti funzioni:
• la funzione valore assoluto, che a ogni numero integer associa il suo valore assoluto;
• la funzione quadrato, che a ogni numero integer associa il suo quadrato;
• la funzione successore, che a ogni numero integer (diverso dal massimo numero rappresentabile) associa il successivo;
• la funzione predecessore, che a ogni numero integer (diverso dal minimo numero rappresentabile) associa il precedente.
Nella codifica di un numero integer nel sistema di numerazione binario, la precisione con cui vengono rappresentati i numeri dipende dal numero di bit disponibili. Un tipo di dato integer con precisione N ammette al massimo 2N valori; per esempio poiché un byte corrisponde a 8 bit, la precisione di macchina con questo tipo di dato permette la rappresentazione di 28 = 256 numeri, ossia da 0 a 255 se considerati senza il segno, da −128 a 127 con il segno. Questa limitazione viene superata nei linguaggi di programmazione ad alto livello che consentono di impiegare un numero doppio di numeri rispetto a quelli permessi dalla precisione di macchina: in questo caso il numero integer è utilizzato in doppia precisione.