0

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

    short n = -1;

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

输出:

11111111111111111111111111111111

结果包括32位,为什么?

4

3 回答 3

7

原因是它Integer代表 32 位类型并toBinaryString()接受一个int参数。在调用该方法之前,您的short参数被提升为 an 。int

于 2012-07-22T01:59:41.813 回答
2

你在调用时short被隐式转换为:inttoBinaryString()

public static String Integer.toBinaryString(int i)
于 2012-07-22T02:00:46.030 回答
1

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

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

对于零拍。

System.out.println(Integer.toBinaryString(0x10000 + (n & 0xFFFF)).substring(1));
于 2012-07-22T07:59:49.753 回答