为什么我不能把0xffff放入java中的short

时间:2017-03-16 10:18:48

标签: java hex short

如标题,我记得short是 16位值,而每个十六进制字符都是4位值,所以我认为 {{1 <}> 可以放在 0xffff 中, 但它不能,为什么?

4 个答案:

答案 0 :(得分:4)

Java short中的

签名的数据类型。因此,设置了所有位的值为-1。我怀疑这是你想要他的价值......

答案 1 :(得分:0)

此分配失败,因为0xffff是int字面值:

short s = 0xffff;

您必须将其强制转换为short才能使其正常运行:

short s = (short) 0xffff;

请记住,short是签名类型,因此您可能无法获得预期的价值。十六进制0xffff代表数字-1

System.out.println((short) 0xffff); // Prints -1.

答案 2 :(得分:0)

我想我已经找到了答案,整数是一个带符号的dataType,并且有一点用于放置一个Sign位,所以虽然short有8位,实际上我们只能用7位来存储我们的日期,谢谢所有回答,谢谢!

答案 3 :(得分:-1)

因为0xffff是int的格式,你需要将它转换为简短。

short s= (short)0xffff;