我了解到一个短类型变量是一个 16 位有符号整数,但是
short n = -1;
System.out.println(Integer.toBinaryString(n));
输出:
11111111111111111111111111111111
结果包括32位,为什么?
我了解到一个短类型变量是一个 16 位有符号整数,但是
short n = -1;
System.out.println(Integer.toBinaryString(n));
输出:
11111111111111111111111111111111
结果包括32位,为什么?
原因是它Integer
代表 32 位类型并toBinaryString()
接受一个int
参数。在调用该方法之前,您的short
参数被提升为 an 。int
你在调用时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));