Ask Your Question
0

sage code for decimal to binary expansion

asked 2016-12-16 08:36:54 -0600

this post is marked as community wiki

This post is a wiki. Anyone with karma >750 is welcome to improve it.

k=4 then (0100)

edit retag flag offensive close merge delete

2 answers

Sort by ยป oldest newest most voted
1

answered 2016-12-16 09:50:34 -0600

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.

edit flag offensive delete link more

Comments

So in either case you have to do something... maybe b = a.digits(2); b.reverse() like this?

kcrisman gravatar imagekcrisman ( 2016-12-17 08:14:59 -0600 )edit

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 gravatar imageVivekGandhi ( 2019-09-27 04:22:52 -0600 )edit

@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.

John Palmieri gravatar imageJohn Palmieri ( 2019-09-27 16:06:47 -0600 )edit
1

answered 2016-12-16 08:57:34 -0600

kcrisman gravatar image

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

sage: a = 15
sage: a.binary()
'1111'
edit flag offensive delete link more

Your Answer

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

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-12-16 08:36:54 -0600

Seen: 3,008 times

Last updated: Dec 16 '16