我学到了一个短类型变量是一个16位有符号整数,但是
short n = -1;
System.out.println(Integer.toBinaryString(n));
输出:
11111111111111111111111111111111
结果包括32位,为什么?
答案 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));