📜  Java中的 StrictMath multiplyHigh() 方法及示例

📅  最后修改于: 2022-05-13 01:54:59.840000             🧑  作者: Mango

Java中的 StrictMath multiplyHigh() 方法及示例

StrictMath 类multiplyHigh(long x, long y)方法用于从两个 64 位因子的 128 位乘积中返回最高有效 64 位。此方法将两个 long 值作为输入,一个 long 是一个 64 位数字。此方法将两个 long 值相乘,并从可能为 128 位长的乘积结果中返回最高有效 64 位。

句法:

public static long multiplyHigh(long x, long y)

参数:此方法接受两个 long x, y作为参数,其中 x 和 y 是我们要相乘的参数。

返回值:此方法从两个 64 位数字即 X * Y的 128 位乘积中返回最高有效的 64 位长值。

注意:此方法是在JDK 9 中添加的。因此它不会在 Online IDE 中运行。

下面的程序说明了 multiplyHigh() 方法:

方案一:

// Java program to demonstrate
// multiplyHigh() method of StrictMath class
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // two long values
        long a = 45267356745l, b = 45676556735l;
  
        // apply multiplyHigh method
        long c = StrictMath.multiplyHigh(a, b);
  
        // print result
        System.out.println(a + " * "
                           + b + " = "
                           + c);
    }
}

输出:

45267356745 * 45676556735 = 112

程序 2:将两个 long 相乘包含 Long.MAX 值。

// Java program to demonstrate
// multiplyHigh() method of StrictMath class
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // two Integer values
        long a = Long.MAX_VALUE, b = Long.MAX_VALUE;
  
        // apply multiplyHigh method
        long c = StrictMath.multiplyHigh(a, b);
  
        // print result
        System.out.println(a + " * "
                           + b + " = " + c);
    }
}

输出:

9223372036854775807 * 9223372036854775807 = 4611686018427387903

参考资料:https: Java/lang/StrictMath.html#multiplyHigh(long, long)