Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> циклический сдвиг char, циклический сдвиг влево 
V
    Опции темы
awesome
Дата 30.11.2010, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



есть a char[8] = {1, 2, 3, 4, 5, 6, 7, 8}. необходимо сдвинуть его циклически на 11 бит влево.
каждое число представлено 4 битами - 1 = 0001; 2 = 0010 и т.д.
т.е. получим 0001 0010 0011 0100 0101 0110 0111 1000
при циклическом сдвиге влево получим 1010 0010 1011 0011 1100 0000 1001 0001
и a char[8] станет  = {10, 2, 11, 5, 12,  0,  9, 1}
как это можно сделать не переводя в двоичную систему?

PM MAIL   Вверх
Леопольд
Дата 1.12.2010, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



Цитата(awesome @  30.11.2010,  19:21 Найти цитируемый пост)
как это можно сделать не переводя в двоичную систему?
при помощи &, |, сдвигов и наложения маски unsigned char(0xFF) == unsigned char(-1)



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
bsa
Дата 1.12.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



awesome, делишь количество сдвигов на 4. В результате получаешь сколько цифр нужно переставить из начала в конец и на сколько это все потом сдвинуть. Затем сдвигаешь каждое число на оставшееся количество разрядов (остаток от деления на 4 количества сдвигов), а прибавляя к уже сдвинутому числу старшие 4 разряда от сдвига предыдущего числа. После окончания цикла добавляешь к последнему числу старшие разряды от первого.
PM   Вверх
mes
Дата 1.12.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(awesome @  30.11.2010,  18:21 Найти цитируемый пост)
есть a char[8] = {1, 2, 3, 4, 5, 6, 7, 8}


Цитата(awesome @  30.11.2010,  18:21 Найти цитируемый пост)
каждое число представлено 4 битами - 1 = 0001; 2 = 0010 и т.д.
т.е. получим 0001 0010 0011 0100 0101 0110 0111 1000

не равнозначное представление... 

должно быть тогда  char a[4] = {0х12,0х34,0х56, 0х78};

Добавлено @ 15:11
Цитата(awesome @  30.11.2010,  18:21 Найти цитируемый пост)
как это можно сделать не переводя в двоичную систему?

для 32 битной:
занести данные в unsigned  и
Код

res = i<< 11| i>>32-11;



Это сообщение отредактировал(а) mes - 1.12.2010, 15:11


--------------------
PM MAIL WWW   Вверх
awesome
Дата 1.12.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 20.10.2010

Репутация: нет
Всего: нет



Цитата(mes @  1.12.2010,  15:00 Найти цитируемый пост)
не равнозначное представление... 

должно быть тогда  char a[4] = {0х12,0х34,0х56, 0х78};


просто из этих 8 цифр должно быть составлено 32битное слово.


bsa,  а можно примерчик? а то как-то не очень понял=(

И да, немного напутал, после сдвига эти 32бита надо представить как 4 байта.
Т.е. 10100010 10110011 11000000 10010001
PM MAIL   Вверх
mes
Дата 1.12.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(awesome @  1.12.2010,  14:50 Найти цитируемый пост)

просто из этих 8 цифр должно быть составлено 32битное слово.

ну  раз требуется из 8, то и так пойдет.. составляйте из них 32х битное словои и уже его сдвигайте.. чуть выше показано как.. 


Это сообщение отредактировал(а) mes - 1.12.2010, 21:40


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0774 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.