我有以下号码;让我们称它为第一
-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/