Название: Битовые операции с элементом QByteArray Отправлено: raccoon от Июль 25, 2014, 07:14 Здравствуйте. У меня такая проблема.
Есть массив QByteArray , назовём его ret Есть 2 переменных типа int int n; //принимает значение от 1 до 28 int d; //принимает значение от 0 до 3 Так вот , в массив ret нужно добавить элемент (байт) в котором биты распределены следующим образом, тоесть в первых 5ти битах переменная n а в последних 3х переменная d; Вот "нарисовал" |---|---|---|---|---|---|---|---| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |---|---|---|---|---|---|---|---| |<-------n------->|<---d--->| |---|---|---|---|---|---|---|---| Тоесть посути нужен метод(функция), который принимает две int и возвращает один QByteArray вида, описанного выше. Заранее спасибо, надеюсь, объяснил понятно чего хочу. Название: Re: Битовые операции с элементом QByteArray Отправлено: Old от Июль 25, 2014, 07:25 Код
Название: Re: Битовые операции с элементом QByteArray Отправлено: raccoon от Июль 25, 2014, 07:31 Old, спасибо! А не могли бы вы объяснить, как это работает ?
Название: Re: Битовые операции с элементом QByteArray Отправлено: Old от Июль 25, 2014, 07:43 Сдвиг на 3 бита влево и логический OR для установки младших бит из d - логические операции.
Название: Re: Битовые операции с элементом QByteArray Отправлено: s_Creator от Июль 25, 2014, 16:22 логический OR это ||
а у здесь побитовый AND (&) с числом 7 обнуляет старшие биты числа d и побитовый OR (|) сращивает числа n и d так что 5 старших битов занимает n, а 3 младших d (имхо) Название: Re: Битовые операции с элементом QByteArray Отправлено: Old от Июль 25, 2014, 16:25 логический OR это || Все все эти операции or, and, xor - логические. Только одни работают с битами, а другие с bool.а у здесь побитовый AND (&) с числом 7 обнуляет старшие биты числа d и побитовый OR (|) сращивает числа n и d так что 5 старших битов занимает n, а 3 младших d (имхо) Название: Re: Битовые операции с элементом QByteArray Отправлено: s_Creator от Июль 25, 2014, 16:33 Все все эти операции or, and, xor - логические. Только одни работают с битами, а другие с bool. это справедливо для Delphi где вы пишите именно or and и для битовых и для логических операций.а в С++ специально различают || и |. Поменяйте у себя | на || и расскажите результаты. Edit:http://www.c-cpp.ru/books/bitovye-operatory (http://www.c-cpp.ru/books/bitovye-operatory) http://www.c-cpp.ru/books/operatory-otnosheniya-i-logicheskie-operatory (http://www.c-cpp.ru/books/operatory-otnosheniya-i-logicheskie-operatory) Edit:из википедии: Цитировать Ряд источников по языкам низкого уровня называет побитовые логические операции просто логическими[1][2], но в терминологии программирования на языках высокого уровня в названиях битовых операций присутствуют прилагательные битовый, побитовый (например: «побитовое логическое И», оно же «побитовое умножение»), поразрядный. http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8 (http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8)Название: Re: Битовые операции с элементом QByteArray Отправлено: Old от Июль 25, 2014, 17:00 Это вы топикстартеру адресуйте/рекомендуйте. Мне это давным давно не надо.
Специально их различают или случайно, а они как были логическими так и остались, побитные они или нет - дело десятое. Название: Re: Битовые операции с элементом QByteArray Отправлено: s_Creator от Июль 25, 2014, 21:06 побитные они или нет - дело десятое. |