• 0

[JAVA] Big Integer to Binary


Question

13 answers to this question

Recommended Posts

  • 0

BigInteger does contain a radix feature, allowing you to supply the base-radix number for the instance:

BigInteger myInt = new BigInteger("12");
String binaryString = myInt.toString(2);

The toString() method can take an integer argument to represent the radix value (the base-radix value, e.g. base-2, base-10, base-16 etc). When the method runs, it will convert the number into the binary representation, so the above example should output the myInt value as the binary representation of 12 = '11000'.

I haven't done java in a while (it's mainly because I hate it), so I could be wrong!

  • 0

You can also do the same thing to take a binary integer and make it a BigInteger:

String binaryString = "1010110101011010101010101101010101100101011010001010001100101110";
BigInteger bigInt = new BigInteger(binaryString, 2);

Untested, but according to the docs, it should work. That constructor has been there since J2SE 1.3 at least. :)

  • 0
  Primexx said:
care to explain?

I could, but Wikipedia explains it so much better - http://en.wikipedia.org/wiki/Balanced_ternary

Simply put, there are three values, like in normal (unbalanced) ternary: -1, 0 and 1, which are easily represented using '-', '0' and '+' respectively.

The idea is the same as in any base. Multiply the place value by the value at that place and do the same for the rest. Then add them up. Example:

+-0- (balanced ternary) to decimal:

+ x 3^3 = 1 x 3^3 = 1 x 27 = 27
- x 3^2 = -1 x 3^2 = -1 x 9 = -9
0 x 3^1 = 0 x 3^1 = 0 x 3 = 0
- x 3^0 = -1 x 3^0 = -1 x 1 = -1

(27) + (-9) + (0) + (-1) = 18 + -1 = 17

Strange? Not really. Also, there is no need for a sign bit, unlike binary. -+ is -3 + 1 = -2. However, if you thought of the '-' as a sign bit like it is in binary, then wouldn't it really be ------...---+ ? But then you're subtracting A LOT, not just denoting a sign. So techically, you can write -+ as 000000...00-+. The same is true for positive numbers as well. In other words, all values would be unsigned, and positive and negative values could be represented equally!

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.