lettura facile

La funzione int16() in Scilab

La funzione int16() in Scilab è utilizzata per convertire numeri o matrici di numeri in una rappresentazione a 16 bit come interi con segno.

int16(x)

Il parametro x può essere un singolo numero decimale o una matrice di numeri.

La funzione produce come output un valore intero a 16 bit se hai fornito un singolo numero, o un insieme di valori interi a 16 bit se hai indicato una matrice.

Cos'è un numero intero a 16 bit? E' un tipo di dato numerico che occupa 16 bit di memoria. Quindi, sapendo che un bit è composto da due cifre 0 e 1, questo tipo di dati può rappresentare 216 = 65536 numeri ossia i numeri compresi tra -32.768 e 32.767.

L'uso di int16() è semplice. Ecco un esempio di base.

Crea una matrice di numeri decimali.

M = [1.2, 2.7; 3.5, 4.9];

Poi converti la matrice tramite la funzione int16()

int16(M)

Il risultato è una matrice con valori interi.

ans =
1 2
3 4

Cosa accade se il numero è maggiore di 32767?

Quando superi il valore massimo rappresentabile a 16 bit, la funzione int16() utilizza l'aritmetica modulare e riparte dal valore minimo ossia -32768

l'aritmetica modulare a 16 bit

Ad esempio, nella rappresentazione a 16 bit 32767+1 restituisce -32768

int16(32767+1)

ans=
-32768

Mentre 32767+2 restituisce -32767

int16(32767+2)

ans=
-32767

Quando, invece, il valore è inferiore al minimo valore rappresentabile a 16 bit (ossia -32768), Scilab riparte dal valore massimo (32767)

int16(-32768-1)

ans=
32767

Pertanto, in questo tipo di conversioni Scilab non restituisce un errore di overflow perché si basa sull'aritmetica modulare.

Perché usare int16()? Ti permette di usare una minore quantità di memoria se sai già che i tuoi dati numeri sono numeri interi a 16 bit compresi oppure di migrare i dati verso dispositivi che usano dati a 16 bit.

Tuttavia, ricorda che ogni conversione implica un troncamento di un numero decimale in intero, ossia una perdita di precisione nei calcoli.

Quindi usala la funzione int16() con la consapevolezza dei suoi pro e dei suoi contro.

 




Se qualcosa non ti è chiaro, scrivi la tua domanda nei commenti.




FacebookTwitterLinkedinLinkedin