我學到了短型變量是一個16位帶符號的整數,但爲什麼Integer.toBinaryString對於短類型參數的結果包含32位?
short n = -1;
System.out.println(Integer.toBinaryString(n));
輸出:
11111111111111111111111111111111
結果包括32位,爲什麼呢?
我學到了短型變量是一個16位帶符號的整數,但爲什麼Integer.toBinaryString對於短類型參數的結果包含32位?
short n = -1;
System.out.println(Integer.toBinaryString(n));
輸出:
11111111111111111111111111111111
結果包括32位,爲什麼呢?
原因是Integer
代表32位類型,toBinaryString()
需要int
參數。在調用方法之前,將short
參數提升爲int
。
有沒有什麼API可以在二進制文件中打印短型變量? – 2012-07-22 02:08:54
當然,只需使用'Integer.toBinaryString()'並取最後(最多)16個二進制數字。 – 2012-07-22 02:10:01
有人說短型整數在JVM中以32位評估,他說得對嗎? – 2012-07-22 02:14:40
您short
被隱式轉換爲一個int
當你調用toBinaryString()
:
public static String Integer.toBinaryString(int i)
要打印低16位可以使用。
System.out.println(Integer.toBinaryString(n & 0xFFFF));
用於零拍。
System.out.println(Integer.toBinaryString(0x10000 + (n & 0xFFFF)).substring(1));
當然是正確的,除了如果它是一個正數,結果將不包含零填充的最高有效位。 – 2012-07-22 14:27:34
因爲實際的參數值總是一個int,方法簽名和促銷規則,其次,因爲它是一個Integer類中的方法。 – EJP 2012-07-23 02:27:54