2017-09-26 1 views
0

Java, wenn ich Int zu kurz, welcher Teil des Int wird verloren gehen.Java, wenn ich Int zu kurz, welcher Teil des Int wird verloren gehen

Wenn zum Beispiel int i = 32768, wenn ich i zu kurz geworfen, die einen Teil

Wie in Java verloren gehen, int hat 32 Bits, und kurz nur 16 Bits, wenn int zu kurz Gießen , werden die oberen 16 Bits verloren oder die unteren 16 Bits?

+0

Haben Sie experimentiert? – chrylis

Antwort

0

kurze Werte sind auf -32768 bis +32767 begrenzt, und Java behält nur die niedrigstwertigen 16 Bits beim Casting auf einen kurzen Wert (a narrowing primitive conversion, JLS 5.1.3).

Die oberen 16 Bits

Beispiel 5.1.3-2 verloren. Verengung Primitive Konvertierungen, die Informationen verlieren

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); 
    } 
}