【发布时间】:2017-03-16 10:18:48
【问题描述】:
比如标题,我记得short是一个16位的值,而每个十六进制字符都是一个4位的值,所以我想0xffff 可以放在 short 中,
但它不能,为什么?
【问题讨论】:
比如标题,我记得short是一个16位的值,而每个十六进制字符都是一个4位的值,所以我想0xffff 可以放在 short 中,
但它不能,为什么?
【问题讨论】:
在 Java 中 short 是一个 signed 数据类型。因此,设置了所有位的值是-1。我怀疑这就是你希望他所重视的......
【讨论】:
此分配失败,因为 0xffff 是 int 文字:
short s = 0xffff;
您必须将其转换为 short 才能使其工作:
short s = (short) 0xffff;
请记住,short 是有符号类型,因此您可能无法获得您期望的值。十六进制的0xffff代表数字-1。
System.out.println((short) 0xffff); // Prints -1.
【讨论】:
因为 0xffff 是 int 的格式,你需要将其转换为 short。
short s= (short)0xffff;
【讨论】:
short s = 0xfff,一切都会好起来的!
我想我已经找到答案了,integer 是有符号的数据类型,还有一点可以用来放一个 Sign 位,所以虽然 short 有 8 位,但实际上我们可以用 7 位来存储我们的日期,谢谢大家的回答,谢谢!
【讨论】: