Ask Your Question
1

I should store binary values in an array

asked 4 years ago

Rama gravatar image

updated 4 years ago

slelievre gravatar image

Given a Sage integer, I wish to obtain the list of its binary digits.

How can I get that?

So far, I found the binary method of Sage integers.

Given an integer, that method returns its binary expansion as a string.

For example:

sage: a = 8
sage: a.binary()
'1000'

Thanks for the response.

Here is a follow-up question.

x = 3
z = IncreasingArrays()
z = x.binary() 

for i in range(x):
    if z[i] == 1:
        print('  ', 2^i)  # Not printing here

I want to print if binary value is 1. And raise it to power 2.

The for loop isn't printing print statement also. Please help me with these for loops and also how to store values in an array.

In C I go:

int a[6];
for(i = 2 ; i <= 5 ; i++) { a[i] = 1 ; }

Here like this in C, array values are set.

How to do the same in Sage please help.

Preview: (hide)

Comments

Ask Sage is a questions and answers website.

It stores questions and answers for future reference.

Curious people can learn by reading questions and answers.

People with questions can search the web and find previously asked similar questions.

Once a question has been answered, please do not erase the question or replace it with a different one.

Otherwise it becomes impossible to make sense of anything here.

If an answer solves your problem, accept it to mark the question as solved.

If you have more questions, ask them as separate questions.

slelievre gravatar imageslelievre ( 4 years ago )

Thanks please if you understand the question please answer it.

Rama gravatar imageRama ( 4 years ago )

Why not open a new question:

  • click the "Edit" button under the question
  • copy the "follow-up" part
  • open a new question
  • paste the "follow-up" part there
  • remove it from here

The new question can say "this is a follow up to Ask Sage question 55323" and you can add a comment here saying "See a follow-up question at Ask Sage question 55xxx".

slelievre gravatar imageslelievre ( 4 years ago )

1 Answer

Sort by » oldest newest most voted
1

answered 4 years ago

tmonteil gravatar image

updated 4 years ago

slelievre gravatar image

I am not completely sure about your question (please provide more details if i do not understand correctly), but you can transform the string '1000' into the list of its letters as follows:

sage: list(a.binary())
['1', '0', '0', '0']

Note however that each entry is a string, not an integer. If you want a list of integers, you can transform each letter into an element of ZZ:

sage: [ZZ(i) for i in a.binary()]
[1, 0, 0, 0]

The bits and digits methods can give these bits (or "binary digits") directly as integers, ordered the other way around:

sage: a.bits()
[0, 0, 0, 1]

sage: a.digits(base=2)
[0, 0, 0, 1]
Preview: (hide)
link

Your Answer

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

Add Answer

Question Tools

Stats

Asked: 4 years ago

Seen: 584 times

Last updated: Jan 18 '21