我的导师要求我找到一种在java中获取Integer
最大值的方法,而不使用实际的单词Integer
,以及Float
,{{1数字0-9。他还鼓励我们使用网络寻找答案。
我宁愿不发布代码,但实际上它只是一条注释说明上面的内容,一些类和方法代码以及断言行检查Double
。
我花了几天时间研究这个问题,我得出的结论是,我需要以某种方式使用Long来创建一个值,当转换为i==Integer.MAX_VALUE
时,它会转换为Integer.MAX_VALUE
,I只是无法弄清楚实际的代码来做到这一点。
任何帮助都会很好。
答案 0 :(得分:0)
你不需要很长时间......
您可以使用~0 >>> 1
; ~0
为0xffffffff,右移1而不携带符号位将为0x7fffffff,即Integer.MAX_VALUE
。
请注意使用>>>
代替>>
; >>
将随身携带"转移时的符号位,这不是你想要的。
答案 1 :(得分:0)
int i = 0b01111111111111111111111111111111;
它是java中最大Integer值的二进制表示。有32位,第一个设置为零,因为java使用Two's complement来实现负值。
答案 2 :(得分:0)
获得最大int值必须知道的是:
有了这些知识,您可以使用位操作来计算最大整数值。除了位31之外,大整数值的所有位都设置为1.因此,将~ operator
(按位不)设置为0会导致所有32位设置为1.使用{将所有位向右移动一个位置{1}}(将第31位设置为0)会产生最大可能的整数。
>>> operator