Nella versione a 32bit il range rappresentabile va calcolato pensando ad un bit di segno, una mantissa a 23bit e un esponente a 8bit con valori compresi tra -126 e 127.

Inoltre lo standard prevede la rappresentazione di due valori per zero (da destra e da sinistra) due per infinito (positivo e negativo), e di valori NaN (not a number) da utilizzare ad esempio come risultati di operazioni impossibili (es. divisioni per zero).

Tipo Q.tà di Memoria Informazione rappresentata Valore di default
byte 8 bit Variabile con segno (con rappresentazione “two’s complement”, complemento a due) e rappresenta valori in un range [-128 e 127] (estremi inclusi) 0
short 16 bit Numeri interi (con segno) in un range [-32,768, 32,767] 0
int 32 bit Numeri interi (per default con segno, signed) in un range [-231, 231-1] . Con Java 8 è stata introdotta la possibilità di utilizzare gli int per rappresentare quantità unsigned che potranno avere range [0, 232-1] (grazie ad appositi metodi statici introdotti nelle classi Integer e Long) 0
long 64 bit Numeri interi (per default con segno, signed) in un range [-263, 263-1]. Come per gli interi in Java 8 esiste la possibilità di utilizzarli come quantità unsigned con range (positivo) che arriva fino a 264-1. 0L
float 32 bit Numeri in virgola mobile in singola precisione secondo la specifica IEEE 754, utilizzando la rappresentazione segno, mantissa esponente.
(-1)segno * mantissa * 2esponente
0.0f
double 64 bit Numeri in virgola mobile in doppia precisione secondo la specifica IEEE 754. La precisione con cui vengono rappresentati i numeri aumenta in virtù dell’aumento del numero di bit utilizzati. 0.0d
boolean non specificato, ma sarebbe sufficiente un solo bit serve a rappresentare solamente 2 valori: vero o falso (true o false). false
char 16 bit È utilizzato per la memorizzazione di caratteri del charset Unicode) nel range ['\u0000', '\uffff'] (in esadecimale) o equivalentemente [0,65535]. \u0000

Esercizio

/* dichiaro tre tipi di variabili diverse per testare il loro funzionamento
*
* eseguo in seconda istanza il seguente esercizio per testare il funzionamento
* del ciclo while
*
* a) stampo i numeri da 1 a 10 e
* b) stampo i numero da 1 a 20 e raggiunto il 20 continuo a stampare in maniere
* decrescente da 20 a 1
* c) stampo i numeri dispari tra 1 e 100
* d) stampo i numeri da 1 a 100 evidenziando il numeri multipli di 25
* e) stampo i numeri da 1 a 100 in maniera consecutiva su una sola riga evidenziando i
* multipli di 100
* f) stampo i numeri da 100 a 1 evidenziando i multipli di 7
*
*
*/

public static void main(String[] args) {

// byte gestisce i numero da -128 +127
// int  char
byte a;
a=-128;
//System.out.println(a);
//abbiamo testato che il numero gestito da byte
// va da -128 a +127

int b;
b=+2147483647;
// System.out.println(b);

char c;
c=’@’;
int contatore=0;
while(contatore<=1000)
{
System.out.print(contatore + ” “);
System.out.print(c);
contatore++;
}

}
}

 

 

risorse online sull’argomento:

http://www.di-srv.unisa.it/professori/masucci/LPII-0405/slides/Lez03.pdf