Re: Converting Binary form to a desired array
- To: mathgroup at smc.vnet.net
- Subject: [mg76026] Re: Converting Binary form to a desired array
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Tue, 15 May 2007 04:46:57 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <f2959d$n0n$1@smc.vnet.net>
athlonspell wrote:
> Hello,
>
> I have this:
>
>> BaseForm[212,2] = 10100
>
> Now, I am trying to achieve this output from above:
>
>> {2^4, 0, 2^2, 0, 0}
>
> How do I go about do this?
>
> Thank you,
> Sharon
First, note that the binary representation of the decimal number 212 is
11010100 and not what you wrote (10100).
In[1]:=
BaseForm[212, 2]
Out[1]//BaseForm=
11010100
2
Second, BaseForm is just a wrapper (like NumberForm, PaddedForm, etc.).
You should use IntegerDigits to get a list that can be easily manipulated.
In[2]:=
IntegerDigits[212, 2]
Out[2]=
{1, 1, 0, 1, 0, 1, 0, 0}
The following function should do what you are looking for.
In[3]:=
myBase[n_Integer] := Module[{dg},
dg = IntegerDigits[n, 2];
Append[Reverse[MapIndexed[
If[#1 == 0, 0, HoldForm[2]^#2[[1]]] & ,
Reverse[Most[dg]]]], Last[dg]]]
In[4]:=
myBase[212]
Out[4]=
7 6 4 2
{2 , 2 , 0, 2 , 0, 2 , 0, 0}
Regards,
Jean-Marc