In Java, int s vengono archiviati utilizzando una complemento a 2 a 32 bit e short s con una rappresentazione del complemento a 16 bit 2
Questo significa che un int con il valore 17 conterrà il bitpattern 00000000 00000000 000000000 00010001 e con il valore 100000 conterrà il bitpattern 00000000 00000001 10000110 10100000 .
Quando converti questi numeri in short , devi inserirli in 16 bit. Questo viene fatto mantenendo i 16 bit inferiori (più a destra) e gettando via il resto, in quanto conserva tutti i valori che possono essere rappresentati in un short .
Il modello per 17 diventa 00000000 00010001 , che è ancora il numero 17.
Il modello per 100000 diventa 10000110 10100000 . Qui abbiamo perso un bit che era effettivamente necessario per la rappresentazione del numero, quindi il valore rappresentato dai bit rimanenti è diverso. Secondo la rappresentazione di 2'complement a 16 bit, il bitpattern 10000110 10100000 rappresenta il numero -31072.