所以我尝试过这样做,
int extendedInteger = 0 & 0xff;
但这似乎不起作用, 我试图通过签名来扩展最大值, 这样它可以容纳超过Integer.MAX_VALUE。 我的意思是将Integer设为64位?
我还在学习这门语言,而且我很感激任何帮助。
答案 0 :(得分:3)
Integer
(int)是java中的原始类型,占用内存中的32位。 int
已已签名,您无法做任何改变。
您要做的是使用原始类型long
,它在内存中使用64位,允许它存储最多9223372036854775807
的值。 long
也已签名,这意味着您可以转到-9223372036854775808
。
因此,您的变量将是long extendedInteger
。
答案 1 :(得分:2)
int可以有2个 32 个不同的值,它们原则上由你决定。这只是一个解释问题(虽然大多数可能的解释很难做到)。如果你想把它解释为从0到2 32 -1,你可以,而且很容易。那个java"没有无符号整数"这不是一个严重的问题,对于大多数操作来说,它没有任何区别:
对于某些操作,它确实有所作为:
>>>
)long
)long
或使用x <u y = (x ^ (1<<31)) <s (y ^ (1<<31))
)long
)当然对于long
的演员阵容,你必须撤消符号扩展,例如像
value & 0xffffffffL
。
在Java 8中,Integer
类包含替换上述解决方法的函数:
Integer.divideUnsigned
Integer.compareUnsigned
Integer.toUnsignedString
答案 2 :(得分:0)
如果您的意思是签名和未签名,就像在&#39; c ++&#39; java没有这方面的规定。对于保持大于Integer.MAX_VALUE的值,请长时间使用。