【发布时间】:2015-10-21 23:03:34
【问题描述】:
我正在缩小并检查了以下代码:-
int i = 131072;
short s = (short)i;
System.out.println(s); //giving 0
这个缩小正在输出0。我无法理解背后的逻辑。
【问题讨论】:
-
您的预期输出到底是什么?对我来说,预期的输出是
0。 -
这有帮助吗?
System.out.println(Integer.toBinaryString(i)) -
@MarkoTopolnik 不期待什么,只是想知道这是如何工作的
-
参见docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.3 - “有符号整数到整数类型 T 的窄化转换只会丢弃除 n 个最低位之外的所有位,其中 n 是用于表示类型 T 的位数。”
-
如有疑问,请查阅规范...
标签: java