我了解到一个短类型变量是一个 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被隐式转换为:inttoBinaryString()
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));