![]() |
|
Модераторы: bsa |
![]()
|
|
| awesome |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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} как это можно сделать не переводя в двоичную систему? |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 3 Всего: 13 |
при помощи &, |, сдвигов и наложения маски unsigned char(0xFF) == unsigned char(-1)
-------------------- вопросов больше чем ответов |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
awesome, делишь количество сдвигов на 4. В результате получаешь сколько цифр нужно переставить из начала в конец и на сколько это все потом сдвинуть. Затем сдвигаешь каждое число на оставшееся количество разрядов (остаток от деления на 4 количества сдвигов), а прибавляя к уже сдвинутому числу старшие 4 разряда от сдвига предыдущего числа. После окончания цикла добавляешь к последнему числу старшие разряды от первого.
|
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не равнозначное представление... должно быть тогда char a[4] = {0х12,0х34,0х56, 0х78}; Добавлено @ 15:11 для 32 битной: занести данные в unsigned и
Это сообщение отредактировал(а) mes - 1.12.2010, 15:11 |
||||
|
|||||
| awesome |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
просто из этих 8 цифр должно быть составлено 32битное слово. bsa, а можно примерчик? а то как-то не очень понял=( И да, немного напутал, после сдвига эти 32бита надо представить как 4 байта. Т.е. 10100010 10110011 11000000 10010001 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
ну раз требуется из 8, то и так пойдет.. составляйте из них 32х битное словои и уже его сдвигайте.. чуть выше показано как.. Это сообщение отредактировал(а) mes - 1.12.2010, 21:40 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |