为什么短类型参数的Integer.toBinaryString结果包含32位?

时间:2012-07-22 01:58:28

标签: java

我学到了一个短类型变量是一个16位有符号整数,但是

    short n = -1;

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

输出:

11111111111111111111111111111111

结果包括32位,为什么?

3 个答案:

答案 0 :(得分:7)

原因是Integer表示32位类型,toBinaryString()表示int参数。在调用方法之前,您的short参数将被提升为int

答案 1 :(得分:2)

当您致电short时,

int被隐式投放到toBinaryString()

public static String Integer.toBinaryString(int i)

答案 2 :(得分:1)

要打印较低的16位,您可以使用。

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

零拍。

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