Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Как в Maple перевести двоичное представление числа в массив?
Помогите пожалуйста, поскольку в Maple новичек.

Код:
s:=11 : convert(s,binary);


Вот например есть у меня число 11, я его перевел в двоичное представление получилось естественно "1011", а теперь мне надо сделать цикл: если первый элемент массива равен 1, то сделать одно преобразование, если нулю то сделать другое преобразование.

Вопрос: как мне загнать двоичное представление в массив и как обращаться к каждому элементу массива? Спасибо.

 Re: Как в Maple перевести двоичное представление числа в массив?
немного коряво, дальше усовершенсвуйте сами.

Код:
> s:=11 : convert(s,binary);

                                 1011

> A:="1011";

                             A := "1011"

> B:=[seq(parse(A[i]),i=1..4)];

                          B := [1, 0, 1, 1]

> B[1],B[2],B[3],B[4];

                              1, 0, 1, 1

 Re: Как в Maple перевести двоичное представление числа в массив?
Leox в сообщении #446324 писал(а):
немного коряво, дальше усовершенсвуйте сами.

Код:
> s:=11 : convert(s,binary);

                                 1011

> A:="1011";

                             A := "1011"

> B:=[seq(parse(A[i]),i=1..4)];

                          B := [1, 0, 1, 1]

> B[1],B[2],B[3],B[4];

                              1, 0, 1, 1
А почему не просто:
Код:
convert(11,base,2);
                             [1, 1, 0, 1]
Только надо учитывать, что convert(n,base,b) возвращает цифры, начиная с младшего разряда. Но чаще всего именно так удобнее.

 Re: Как в Maple перевести двоичное представление числа в массив?
Неужели в Maple нет побитовых операций?

 Re: Как в Maple перевести двоичное представление числа в массив?
Как побитовые операции относятся к созданию массива из разрядов числа?

 Re: Как в Maple перевести двоичное представление числа в массив?
arseniiv в сообщении #451315 писал(а):
Как побитовые операции относятся к созданию массива из разрядов числа?


Зачем массив, если человеку нужны значения разрядов?

Побитовые операции, по-всякому, будут быстрее работать. И доп. памяти под ненужный массив не требуют.

 Re: Как в Maple перевести двоичное представление числа в массив?
alex1910 в сообщении #451350 писал(а):
arseniiv в сообщении #451315 писал(а):
Как побитовые операции относятся к созданию массива из разрядов числа?


Зачем массив, если человеку нужны значения разрядов?

Побитовые операции, по-всякому, будут быстрее работать. И доп. памяти под ненужный массив не требуют.
А Вы тему читали?

 Re: Как в Maple перевести двоичное представление числа в массив?
alex1910 в сообщении #451350 писал(а):
arseniiv в сообщении #451315 писал(а):
Как побитовые операции относятся к созданию массива из разрядов числа?
Зачем массив, если человеку нужны значения разрядов?

По-моему alex1910 сделал вполне разумное замечание. Напомню вопрос ТС:
kosmoskozak в сообщении #446224 писал(а):
Вот например есть у меня число 11, я его перевел в двоичное представление получилось естественно "1011", а теперь мне надо сделать цикл: если первый элемент массива равен 1, то сделать одно преобразование, если нулю то сделать другое преобразование.

Если этот массив нужен только для анализа битов в цикле, то в С это делается битовыми операциями и сдвигами. Что-то вроде
Код:
void foo (int number)
{
    int work = number;
    int count = 0;
    while (work) {
        if (work & 1) {
            // 1
        }
        else {
            // 0
        }
        work >>= 1;
        count += 1;
    }
    // рассмотрено 'count' младших разрядов; остальные разряды - нулевые
}

 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group