# How to do binary calculation？

For example, $a=0.10101$ in binary representation.

Then how to calculate $a^2$ directly in mathematica?

Is there any function turning binary into decimal? I only found its inverse...

• Have you seen FromDigits? Jul 15, 2015 at 6:55
• Related: (5989), (6635), (11065) Jul 15, 2015 at 9:12

You can input numbers in any base up to 36 using the notation base^^digits. Digits over 9 are represented using a, b, c, ...

You can print numbers in any base up to 36 using BaseForm.

Thus,

In[1]:= a=2^^0.10101
Out[1]= 0.65625

In[2]:= BaseForm[a^2,2]
Out[2]//BaseForm= Subscript[0.0110111001, 2]


Note that the internal representation of numbers doesn't know or care about bases. These tools are only for inputting or printing numbers, but do not affect how numbers are stored internally. The internal representation is always binary.

IntegerDigits/RealDigits and FromDigits will convert numbers to/from an explicit list of digits. These functions work with any base, not just up to 36.

• It should probably be noted that internal presentation of real numbers in Mathematica is always binary, and this causes rounding errors for ^^ arbitrary-base non-integers with non-power-of-two base. If one wants to perform precise computation on some other base, numbers should be manipulated in their rational forms. Jul 15, 2015 at 7:10
• @kirma Thanks for the addendum! Jul 15, 2015 at 7:11
• Heh, I didn't actually notice your statement about internal format before I wrote my comment. That explains why my comment is... largely, but not entirely redundant. Jul 15, 2015 at 7:47
• @kirma It's not redundant at all, as you explained why it is important that the internal representation is always binary. Jul 15, 2015 at 9:54

You can enter a number in an arbitrary base using base^^digits:

alpha = 2^^0.10101;
BaseForm[alpha, 2]
BaseForm[alpha^2, 2]