我的导师让我想办法得到一份工作 Integer
java中的最大值,而不使用实际单词 Integer
,以及 Float
, Double
还有数字0-9。他还鼓励我们利用网络寻找答案。
我宁愿不张贴代码,但它真正是一个评论,说明上述,一些类和方法代码和一个Assert行检查 i==Integer.MAX_VALUE
.
我花了几天的时间来研究这个问题,我得出的结论是,我需要以某种方式使用一个长的,使一个价值观,将 Package 到 Integer.MAX_VALUE
当转换为 int
,我就是想不出真正的代码来做这个。任何帮助都很好。
3条答案
按热度按时间qyswt5oh1#
int i=0b0111111111111111111111111111;
它是java中最大整数值的二进制表示。有32位,第一位设置为0,因为java使用2的补码来实现负值。
r7s23pms2#
要获得最大int值,必须知道:
整数由4个字节组成
整数的符号由最高位表示(即从0开始计数的第31位)
负整数的第31位设置为1
正整数的第31位设置为0
正整数和负整数用2的补码表示
有了这些知识,您可以使用位运算来计算最大整数值。larges整数值的所有位都设置为1,但位31除外。因此,应用
~ operator
(按位不)设置为0将导致所有32位都设置为1。使用>>> operator
(将位31设置为0)将产生可能的最大整数。2q5ifsrm3#
你不需要很长时间。。。
例如,你可以用,
~0 >>> 1
;~0
为0xFFFFFF,不带符号位右移1将为0x7fffffff,即Integer.MAX_VALUE
.注意使用
>>>
而不是>>
;>>
移动时将“携带”符号位,这不是您想要的。