获取Max值的整数的替代方式

时间:2014-03-11 09:36:30

标签: java integer

我的导师要求我找到一种在java中获取Integer最大值的方法,而不使用实际的单词Integer,以及Float,{{1数字0-9。他还鼓励我们使用网络寻找答案。

我宁愿不发布代码,但实际上它只是一条注释说明上面的内容,一些类和方法代码以及断言行检查Double

我花了几天时间研究这个问题,我得出的结论是,我需要以某种方式使用Long来创建一个值,当转换为i==Integer.MAX_VALUE时,它会转换为Integer.MAX_VALUE,I只是无法弄清楚实际的代码来做到这一点。 任何帮助都会很好。

3 个答案:

答案 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值必须知道的是:

  • 整数由4个字节组成
  • 整数的符号由最高位(位31,从0开始计数)
  • 表示
  • 负整数确实将第31位设置为1
  • 正整数确实将第31位设置为0
  • 使用Two's complement
  • 表示正整数和负整数

有了这些知识,您可以使用位操作来计算最大整数值。除了位31之外,大整数值的所有位都设置为1.因此,将~ operator(按位不)设置为0会导致所有32位设置为1.使用{将所有位向右移动一个位置{1}}(将第31位设置为0)会产生最大可能的整数。

>>> operator