# sage code for decimal to binary expansion

k=4 then (0100)

1

Interestingly, this hasn't been properly asked sometimes. Here is an example:

```
sage: a = 15
sage: a.binary()
'1111'
```

1

This gives the list of digits rather than a string:

```
sage: a = 14
sage: a.digits(2)
[0, 1, 1, 1]
```

Note that these are listed starting with the units digit.

`b = a.digits(2); b.reverse(); ''.join(map(str,b))`

pretty much does the same thing as `a.binary()`

. Doing this with other primitive data types can be done using the Python 'struct' package. For example, for floats: `''.join(bin(ord(c)).replace('0b', '').rjust(8, '0') for c in struct.pack('!f', num))`

. Anyone has any idea how to print the binary representation for Sage ring data types such as Rationals?

@VivekGandhi: what is the binary representation for a rational number? Is `a.numerator().binary() + '/' + a.denominator().binary()`

what you mean? By the way, I don't think there can be a general answer for all "Sage ring data types," since they won't all have a meaningful binary representation.

Please start posting anonymously - your entry will be published after you log in or create a new account.

Asked: ** 2016-12-16 15:36:54 +0200 **

Seen: **6,047 times**

Last updated: **Dec 16 '16**

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.