当前位置: 首页 > 面试题库 >

乘长值?

陆飞鸿
2023-03-14
问题内容
class Main {  
   public static void main (String[] args){  
     long value = 1024 * 1024 * 1024 * 80;  
     System.out.println(Long.MAX_VALUE);  
     System.out.println(value);  
  }  
}

输出为:

9223372036854775807
0

如果是正确的long value = 1024 * 1024 * 1024 * 80L;


问题答案:

在Java中,所有数学运算都是在处理所有当前值所需的最大数据类型中完成的。因此,如果您具有int * int,它将始终以整数形式进行数学运算,但将int * long作为long进行运算。

在这种情况下,将1024 * 1024 * 1024 * 80作为一个Int完成,它将溢出int。

当然,“ L”会强制其中一个操作数为Int-64(long),因此所有数学运算都将值存储为Long,因此不会发生溢出。



 类似资料:
  • 问题内容: 在Java中,有什么方法可以得到2 的乘法的高半部分吗?即由于溢出而消失的部分。(因此128位结果的高64位) 我习惯于在命令执行以下操作的地方编写OpenCL代码:http : //www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/mul_hi.html 由于OpenCL可以在我的CPU上有效地执行此操作,因此Java应该也可以执行

  • 考虑处理可能有数百位数的整数的需要。让我们称之为“超长”整数。显然,它们不能使用int或long int等数据类型进行存储。“超长”整数可以作为用户的输入逐位读入,并存储在一个数组中,超长整数的每个数字都占据数组中的一个位置。问题涉及到将两个正的“超长”整数作为用户的逐位输入。每个数字由用户作为字符输入。正“超长”整数的结尾由$符号的输入和存储表示。 这里,您可以假设正超长整数将占用的最大位数是2

  • 我解决了一个编程问题,如果有两个数字A和B,我必须在乘积的二进制形式中找到1的个数。A和B的范围是[0,10^9]包括在内。这是我写的代码。 这对输入(3,4)很有效,但当我尝试(323294746475)作为输入时,代码不起作用,结果显示0作为答案。我在不同的地方放了几个输出语句进行调试,发现有了这个输入,乘法的结果是-1170032381(这是错误的),因此while循环的条件失败。所以,我像

  • 问题内容: 所以, 问题 我对行乘法有问题。在SQL中,有一个函数可以计算一组行中某个字段的总和。我想得到乘法,即表 这将是作为一个结果。我正在使用 DOUBLE 数据类型来存储我的数据值。 我的方法 从学校数学知道,-可以用来创建所需的表达式,例如: -在这里您会看到此方法的弱点-由于何时未定义-我需要在计算整个表达式之前计算负号。该小提琴提供了示例数据和对此的查询。另一个缺点是,我们需要确定列

  • 本文向大家介绍LCM的最大长度子数组等于C ++中的乘积,包括了LCM的最大长度子数组等于C ++中的乘积的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个数组A。我们必须找到子数组的最大长度,它的LCM与该子数组元素的乘积相同。如果找不到这种子数组,则返回-1。假设数组为{6,10,21},则长度为2,因为在那里有子数组{10,21},其LCM为210,乘积也为210。 该方法是直接的。我

  • 给出了一个长度为n的数组。求子数组元素的乘积之和。 解释 长度为3的数组A=[2,3,4]。 因为,对于以模1000000007计算的较长的子数组,乘积可以更大。 对于所有可能长度的子数组,即1,2,3,....,n,求这些和的有效方法是什么,其中n是数组的长度。