2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Как в Maple перевести двоичное представление числа в массив?
Сообщение15.05.2011, 21:06 


15/05/11
1
Помогите пожалуйста, поскольку в Maple новичек.

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


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

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

 Профиль  
                  
 
 Re: Как в Maple перевести двоичное представление числа в массив?
Сообщение16.05.2011, 10:27 


25/08/05
645
Україна
немного коряво, дальше усовершенсвуйте сами.

Код:
> 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 перевести двоичное представление числа в массив?
Сообщение28.05.2011, 17:08 
Заслуженный участник


27/06/08
4058
Волгоград
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 перевести двоичное представление числа в массив?
Сообщение28.05.2011, 20:25 


21/07/10
555
Неужели в Maple нет побитовых операций?

 Профиль  
                  
 
 Re: Как в Maple перевести двоичное представление числа в массив?
Сообщение28.05.2011, 21:20 
Заслуженный участник


27/04/09
28128
Как побитовые операции относятся к созданию массива из разрядов числа?

 Профиль  
                  
 
 Re: Как в Maple перевести двоичное представление числа в массив?
Сообщение28.05.2011, 23:08 


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


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

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

 Профиль  
                  
 
 Re: Как в Maple перевести двоичное представление числа в массив?
Сообщение29.05.2011, 00:39 
Заслуженный участник


27/06/08
4058
Волгоград
alex1910 в сообщении #451350 писал(а):
arseniiv в сообщении #451315 писал(а):
Как побитовые операции относятся к созданию массива из разрядов числа?


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

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

 Профиль  
                  
 
 Re: Как в Maple перевести двоичное представление числа в массив?
Сообщение29.05.2011, 14:39 
Заслуженный участник


15/05/05
3445
USA
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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group