Побитовый сдвиг массива байтов
От: Аноним  
Дата: 10.02.04 09:01
Оценка:
Подскажите пожалуста как реализовать побитовый сдвиг массива байтов .

Например есть массив char arr[2] = {3, 128}; //00000011 10000000

Сдвинув его влево нужно иметь 00000111 00000000 т.е. {7,0}
Re: Побитовый сдвиг массива байтов
От: Анатолий Широков СССР  
Дата: 10.02.04 09:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите пожалуста как реализовать побитовый сдвиг массива байтов .


А>Например есть массив char arr[2] = {3, 128}; //00000011 10000000


А>Сдвинув его влево нужно иметь 00000111 00000000 т.е. {7,0}


std::bitset<16> a(0x0380);

a <<= 1;
Re: Побитовый сдвиг массива байтов
От: genre Россия  
Дата: 10.02.04 09:39
Оценка:
a[i]=(a[i]<<n)&(a[i-1]>>(8-n))
wrote in message news:533456@news.rsdn.ru...
> Подскажите пожалуста как реализовать побитовый сдвиг массива байтов .
>
> Например есть массив char arr[2] = {3, 128}; //00000011 10000000
>
> Сдвинув его влево нужно иметь 00000111 00000000 т.е. {7,0}
Posted via RSDN NNTP Server 1.8 beta
Re[2]: Побитовый сдвиг массива байтов
От: Аноним  
Дата: 10.02.04 09:51
Оценка:
АШ>
АШ>std::bitset<16> a(0x0380);

АШ>a <<= 1;
АШ>

А как быть, если размер массива больше числа байтов любого целого, которым инициализируется bitset?
Re: Побитовый сдвиг массива байтов
От: alnsn Великобритания http://nasonov.blogspot.com
Дата: 10.02.04 09:56
Оценка: 1 (1) +1
wrote:

> Подскажите пожалуста как реализовать побитовый сдвиг массива байтов .

>
> Например есть массив char arr[2] = {3, 128}; //00000011 10000000
>
> Сдвинув его влево нужно иметь 00000111 00000000 т.е. {7,0}
Смотри www.hackersdelight.org, есть перевод на русский, называется
Алгоритмические трюки для программистов. Рекомендую.
--
Александр Насонов,
Независимый консультант и разработчик ПО
alnsn-mycop@yandex.ru (для более быстрого ответа удалите -мусор из адреса)
Posted via RSDN NNTP Server 1.8 beta
Re[3]: Побитовый сдвиг массива байтов
От: Анатолий Широков СССР  
Дата: 10.02.04 10:05
Оценка:
Здравствуйте, Аноним, Вы писали:

АШ>>
АШ>>std::bitset<16> a(0x0380);

АШ>>a <<= 1;
АШ>>

А>А как быть, если размер массива больше числа байтов любого целого, которым инициализируется bitset?


std::bitset<256> a(std::string('0', 256));

a <<= 1;
Re[4]: Побитовый сдвиг массива байтов
От: Аноним  
Дата: 10.02.04 10:21
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

Отличный класс!!! Все есть ...но .. у меня размер поля задается динамически .
Не могу написать std::bitset<16>.....могу только std::bitset<param> , где param передается как параметр ф-и ,к примеру,
Re[2]: От модератора форума "C/C++"
От: Павел Кузнецов  
Дата: 10.02.04 14:27
Оценка:
Здравствуйте, genre, Вы писали:

a[i]=(a[i]<<n)&(a[i-1]>>(8-n))

wrote in message news:533456@news.rsdn.ru...

> Подскажите пожалуста как реализовать побитовый сдвиг массива байтов .
>
> Например есть массив char arr[2] = {3, 128}; //00000011 10000000
>
> Сдвинув его влево нужно иметь 00000111 00000000 т.е. {7,0}


Ваше сообщение нарушает правила форумов RSDN в отношении оформления и объема
цитирования.

Подобный стиль цитирования, т.е. набор нового текста в начале сообщения с
последующим цитированием всего текста оригинального сообщения (top posting)
не приветствуется в форумах RSDN.ru, более того, настоятельно рекомендую
избегать этого в дальнейшем, так как:

Q: Because it reverses the logical flow of conversation.
A: Why is top posting frowned upon?


Ваши читатели будут вам благодарны, если в дальнейшем вы будете цитировать из
исходного сообщения ровно столько, сколько необходимо для понимания контекста
вашего ответа, а также размещать строки своего ответа непосредственно под
цитируемыми фрагментами, соответственно разбивая исходное сообщение. Также считаю
нужным обратить ваше внимание на то, что в форумах RSDN.ru рекомендуется
оформлять цитаты, помещая аббревиатуру автора оригинального сообщения перед
символом '>' в начале каждой цитируемой строки.

Плагин для Outlook Express, с легкостью позволяющий это делать, вы можете
найти здесь: http://www.fidolook.com

Более подробно о настройке NNTP клиента для работы с форумами РСДН:
http://www.rsdn.ru/files/progs/rsdnnntp/rsdnnntp.xml

Может быть, лично вам по каким-либо причинам более удобен формат, использованный
вами в своем ответе; также вполне возможно, что вы можете не соглашаться
с соображениями, изложенными выше. Тем не менее, обращаю ваше внимание, что
предлагаемый формат сообщений является именно тем, что предпочитает большинство
активных пользователей RSDN.ru, и, соответственно, тем, чего они ожидают для
комфортного чтения. Следуя принятым здесь обычаям, вы скорее встретите
доброжелательно настроенных собеседников, готовых помочь и пойти навстречу.

Спасибо.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[3]: От модератора форума "C/C++"
От: Lorenzo_LAMAS  
Дата: 10.02.04 14:33
Оценка: :)
Павел, ты еще забыл сказать, что не надо тебе в этом топике/форуме/на это сообщение отвечать.
Of course, the code must be complete enough to compile and link.
Re[4]: От модератора форума "C/C++"
От: Павел Кузнецов  
Дата: 10.02.04 15:09
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

LL> Павел, ты еще забыл сказать, что не надо тебе в этом топике/форуме/на

LL> это сообщение отвечать.

Прошу прощения у завсегдатаев форума "С/С++".

К сожалению, пока я не вижу альтернативы регулярному повторению пространных
шаблонных замечаний как средству, побуждающему новичков знать и соблюдать
правила и порядки нашего с вами форума.

Надеюсь на ваше понимание.

P.S. И, да, действительно, отвечать на замечания модератора в форуме не следует.
Вместо этого лучше писать на .
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.