lettura facile

La funzione uint16() in Scilab

La funzione uint16() di Scilab converte numeri o matrici in numeri interi senza segno a 16 bit.

uint16(x)

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

La funzione converte ogni numero decimale in un numero intero a 16 bit senza segno.

Il nome della funzione è l'abbreviazione di "unsigned integer" a 16 bit. Poiché si tratta di un intero senza segno a 16 bit, questo tipo di dati può rappresentare valori che vanno da 0 a 65.535.

Ecco un esempio pratico.

Assegna alla variabile "num" il valore decimale 12345.6789

num=12345.6789

Poi converti il numero in un intero a 16 bit con la funzione uint16()

uint16(num)

La funzione tronca il numero restituendo solo il valore intero 12345.

ans =
12345

Cosa accase se il numero è più grande di 65.535 o più piccolo di zero?

Se il numero è più grande del valore massimo rappresentabile a 16 bit (65.535), la funzione uint16() continua il computo a partire dal valore minimo (0).

L'aritmetica modulare dei numeri interi a 16 bit senza segno

Ad esempio, 65535+1 restituisce 0

uint16(65535+1)

ans =
0

Mentre 65535+2 restituisce 1 e via dicendo.

uint16(65535+2)

ans =
1

Lo stesso accade se il numero è inferiore al valore minimo rappresentabile a 16 bit (ossia zero). In questo caso la funzione continua il computo a ritroso a partire dal valore massimo.

Ad esempio, la conversione di 0-1 ritorna 65535.

uint16(0-1)

ans =
65535

Pertanto, la funzione uint16() non restituisce un errore di overflow, perché si basa sull'aritmetica modulare.

A cosa serve usare gli interi a 16 bit? A differenza dei dati in virgola mobile o di altri tipi di dati più grandi, l'utilizzo di interi a 16 bit riduce significativamente l'uso della memoria, specialmente quando si lavora con grandi set di dati, e rende più veloce il calcolo rispetto agli interi a 32/64 bit e ai numeri in virgola mobile (float).

Tuttavia, ricorda che ogni conversione tramite uint16() implica un troncamento di un numero decimale in un intero e questo comporta una perdita di informazione e di precisione nel calcolo.

 




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




FacebookTwitterLinkedinLinkedin