When I run the following Visual Basic code :
Dim b As Double
b = (2 ^ 16 - 1) * Math.Sqrt(Math.Sqrt((a / (2 ^ 8 - 1))))
(Assuming a
is a double whose value is 15.0)
The result I get for b
is about 32,275.
But when I run the following Java code, which is supposed to do the same as above:
double b;
b = (2 ^ 16 - 1) * Math.sqrt(Math.sqrt((a / (2 ^ 8 - 1))));
Again with a
being 15, I get a much different result: about 17.
Both are solving this equation:
Why is this so? For what I'm working on, the Visual Basic yields result I'm looking for.
Another solution is to keep dividing the number by two, i.e, do n = n/2 iteratively. In any iteration, if n%2 becomes non-zero and n is not 1 then n is not a power of 2. If n becomes 1 then it is a power of 2.
Math. pow(10, exponent)
Since 109 fits into an int and is also exactly representable as a double , you can do this: int exp = (int) Math. pow(10, 9); BigInteger answer = BigInteger.
^
is XOR operator in java. Use Math.pow(2,8)
which is 2 ^ 8
in Visual Basic.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With