java - 逆乘法

标签 java math biginteger modulus

我有以下号码;让我们称它为第一

-1757151608

然后我有第二个号码,我们称它为未知

94507795

最后,我有了产品,我们称它为二号

-1000

如果我将表格中的前两个数字相乘,我得到的答案是 -1000。 问题是,我可以使用第一和第二,但我需要从中得到未知数。

我试过使用 BigInteger 类和它的一些函数,但没有成功。

提前致谢。

最佳答案

这个乘法是不可能逆转的。

首先,让我们取第一个数的二进制补码。

3904635256 = 2147483648 - -1757151608

接下来,我们将第二个数字相乘

369018468323820520 = 3904635256 * 94507795

现在,这是棘手的部分。我们将乘积转换为十六进制,并删除大于 32 位整数的数字。

51F0457800003E8 (hex) = 369018468323820520 (decimal)
800003E8 = 51F0457800003E8 moved to a 32 bit signed integer

现在,我们将十六进制值转换回十进制

2147484648 (dec) = 800003E8 (hex)

最后,我们取小数的补码

-1000 = 2147483648 - 2147484648

由于我们丢弃了 51F0457(十六进制),所以我们无法取回它。这个操作的逆向是不可能的。

关于java - 逆乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335402/

相关文章:

java - 初始化 java.math.BigInteger

java - windows 7中如何启动apache-tomcat-5.0.28运行java中的servlet程序

java - 尝试在 Java 中通过重复减法进行除法。从这往哪儿走?

java - 如何打印迄今为止找到的最大素数?

python - 使用 numpy.fft 的时间带宽积(高斯宽度)

javascript - 使用 javascript 创建模数计算器时遇到问题

java - 如何在sybase 12数据库中存储BigInteger值?

java - 如何完全加载音频但稍后再播放?

java - 如果在 JVM 关闭过程中再次调用 System.exit() 会发生什么情况?

java - 使用 Java 运行 Spark SVMModel 的困难 - java.lang.IncompatibleClassChangeError