java—获取最大值整数的另一种方法

bkhjykvo  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(521)

我的导师让我想办法得到一份工作 Integer java中的最大值,而不使用实际单词 Integer ,以及 Float , Double 还有数字0-9。他还鼓励我们利用网络寻找答案。
我宁愿不张贴代码,但它真正是一个评论,说明上述,一些类和方法代码和一个Assert行检查 i==Integer.MAX_VALUE .
我花了几天的时间来研究这个问题,我得出的结论是,我需要以某种方式使用一个长的,使一个价值观,将 Package 到 Integer.MAX_VALUE 当转换为 int ,我就是想不出真正的代码来做这个。任何帮助都很好。

qyswt5oh

qyswt5oh1#

int i=0b0111111111111111111111111111;
它是java中最大整数值的二进制表示。有32位,第一位设置为0,因为java使用2的补码来实现负值。

r7s23pms

r7s23pms2#

要获得最大int值,必须知道:
整数由4个字节组成
整数的符号由最高位表示(即从0开始计数的第31位)
负整数的第31位设置为1
正整数的第31位设置为0
正整数和负整数用2的补码表示
有了这些知识,您可以使用位运算来计算最大整数值。larges整数值的所有位都设置为1,但位31除外。因此,应用 ~ operator (按位不)设置为0将导致所有32位都设置为1。使用 >>> operator (将位31设置为0)将产生可能的最大整数。

int max = (~0) >>> 1;
2q5ifsrm

2q5ifsrm3#

你不需要很长时间。。。
例如,你可以用, ~0 >>> 1 ; ~0 为0xFFFFFF,不带符号位右移1将为0x7fffffff,即 Integer.MAX_VALUE .
注意使用 >>> 而不是 >> ; >> 移动时将“携带”符号位,这不是您想要的。

相关问题