2012-07-22 46 views
0

我學到了短型變量是一個16位帶符號的整數,但爲什麼Integer.toBinaryString對於短類型參數的結果包含32位?

short n = -1; 

    System.out.println(Integer.toBinaryString(n)); 

輸出:

11111111111111111111111111111111 

結果包括32位,爲什麼呢?

+0

因爲實際的參數值總是一個int,方法簽名和促銷規則,其次,因爲它是一個Integer類中的方法。 – EJP 2012-07-23 02:27:54

回答

7

原因是Integer代表32位類型,toBinaryString()需要int參數。在調用方法之前,將short參數提升爲int

+0

有沒有什麼API可以在二進制文件中打印短型變量? – 2012-07-22 02:08:54

+1

當然,只需使用'Integer.toBinaryString()'並取最後(最多)16個二進制數字。 – 2012-07-22 02:10:01

+0

有人說短型整數在JVM中以32位評估,他說得對嗎? – 2012-07-22 02:14:40

2

short被隱式轉換爲一個int當你調用toBinaryString()

public static String Integer.toBinaryString(int i) 
1

要打印低16位可以使用。

System.out.println(Integer.toBinaryString(n & 0xFFFF)); 

用於零拍。

System.out.println(Integer.toBinaryString(0x10000 + (n & 0xFFFF)).substring(1)); 
+0

當然是正確的,除了如果它是一個正數,結果將不包含零填充的最高有效位。 – 2012-07-22 14:27:34

相關問題