I'm starting Java studies and I have one task: to generate two random integers and store their multiplication. For this, I tried to use long
and BigInteger
. But the result of this multiplication is almost always negative. Why?
int p = a.getN();
int q = b.getN();
BigInteger n = BigInteger.valueOf(p * q);
The getN()
method generates and returns a random value.
Example output for p
, q
and n
, respectively:
1274403499
1155563989
-664855737
(so I understand, it should be 1472654790899997511
, which uses something around 61 bits)