当前位置: 首页 > 知识库问答 >
问题:

Java整数最大范围乘法

葛景龙
2023-03-14
Integer num = 2147483647;
Integer res =  num * num;
System.out.println(res);

上面的输出是1。我不知道为什么。有人能解释一下吗?

提前谢谢。

共有3个答案

于鹏
2023-03-14

这是因为标志值
0:iconst_0
1:istore_1

由于限制超出了整数的范围,它将设置1的标志以了解更多关于它是如何工作的使用此链接

薄鸿远
2023-03-14

这是因为整数溢出。Java的最小值为-2147483648,最大值为2147483647(含),结果(res)超出了整数最大范围。

蔺弘
2023-03-14

这是为了说明为什么结果=1:

    long x = Integer.MAX_VALUE;
    long y = Integer.MAX_VALUE;
    long res = x * y;
    System.out.println(Long.toHexString(res));

指纹

3fffffff00000001

如果我们将res转换为int,我们将得到1

 类似资料:
  • 问题内容: 最近在一次采访中有人问我这个问题。 给定以下代码,静态整数的最小和最大可能值是多少? 我告诉他们,最大值将为25(在没有竞争条件的情况下),而最小值将为5(在每次迭代时所有线程之间的竞争条件的情况下)。 但是面试官说,最小值甚至可以低于5。这 怎么可能? 问题答案: 我声称最小值可能是2。 这样做的关键是的非原子性,即它是读和写,它们之间可能有其他操作。 调用线程T1..T5: T1读

  • 问题内容: 在Python中,有没有一种方法可以获取可以使用的最大整数?是否有一些像INT_MAX这样的预定义常量? 问题答案: Python具有任意精度的整数,因此没有真正的固定最大值。您仅受可用内存的限制。 在Python 2中,有两种类型,int和long。ints使用C类型,而longs是任意精度。您可以使用查找最大值int。但是int会自动将提升为long,因此您通常不必担心: 工作正常

  • 问题内容: 在C中,整数(对于32位计算机)为32位,范围为-32,768至+32,767。在Java中,整数(long)也是32位,但范围为-2,147,483,648至+2,147,483,647。 我不了解Java中的范围有何不同,即使位数相同。有人可以解释吗? 问题答案: 在C语言中,语言本身无法确定某些数据类型的表示形式。它因机器而异,在嵌入式系统上int可以为16位宽,尽管通常为32位

  • 我试图从Geeksforgeeks中解决最大整数值问题。 问题如下:给定一个数字(0-9)的字符串S,您的任务是找到可以从字符串中获得的最大值,方法是将“*”或“”运算符放在数字之间,同时从字符串的左到右遍历并一次拾取一个数字。 输入:输入的第一行包含T表示测试用例的数量。T测试用例紧随其后。每个测试用例包含一行表示字符串的输入。 输出:对于每个测试用例,打印获得的最大值。 这就是我所做的: 输入

  • 本文向大家介绍可被C整除的最大正整数,在C ++中范围为[A,B],包括了可被C整除的最大正整数,在C ++中范围为[A,B]的使用技巧和注意事项,需要的朋友参考一下 在这里,我们将看到一个有趣的问题。让我们考虑我们有三个整数A,B和C。我们必须找到一个最小整数X,使得X mod C = 0,并且X不在[A,B]范围内。如果A,B和C的值分别为5、10和4,那么X的值为4。我们必须按照以下步骤获得

  • 问题内容: 我需要在最大范围内生成随机整数。由于 性能至关重要 ,因此我决定使用XORShift生成器,而不是Java的Random类。 此实现(源)为我提供了一个长整数,但我真正想要的是0到最大值之间的整数。 什么是实现此方法的最有效方法? 问题答案: 我对您的代码很有趣,并提出了以下建议: 我做了一个简单的测试,它是大约 四 倍的速度作为 如果您对它的工作方式很感兴趣,可以阅读以下文章: 免责