2017-09-26 2 views
0

java, quand je mets un int court, quelle partie de l'int sera perdue.java, quand je mets int à court, quelle partie de l'int sera perdue

Par exemple, lorsque int i = 32768, quand je je rejetterai à court, dont une partie sera perdue

Comme en java, int a 32 bits, et court a seulement 16 bits, lors de la coulée int à court , les 16 bits supérieurs seront-ils perdus ou les 16 bits inférieurs?

+0

Avez-vous fait des expériences? – chrylis

Répondre

0

les valeurs courtes sont limitées à -32768 à +32767, et Java ne conserve que les 16 bits les moins significatifs lors de la conversion en court (a narrowing primitive conversion, JLS 5.1.3).

Les 16 bits supérieurs seront perdues

Exemple 5.1.3-2. Réduction des conversions primitives qui perdent des informations

class Test { 
    public static void main(String[] args) { 
     // A narrowing of int to short loses high bits: 
     System.out.println("(short)0x12345678==0x" + 
          Integer.toHexString((short)0x12345678)); 
     // An int value too big for byte changes sign and magnitude: 
     System.out.println("(byte)255==" + (byte)255); 
     // A float value too big to fit gives largest int value: 
     System.out.println("(int)1e20f==" + (int)1e20f); 
     // A NaN converted to int yields zero: 
     System.out.println("(int)NaN==" + (int)Float.NaN); 
     // A double value too large for float yields infinity: 
     System.out.println("(float)-1e100==" + (float)-1e100); 
     // A double value too small for float underflows to zero: 
     System.out.println("(float)1e-50==" + (float)1e-50); 
    } 
}