Russian Qt Forum
Ноябрь 01, 2024, 02:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Битовые операции с элементом QByteArray
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Битовые операции с элементом QByteArray (Прочитано 7929 раз)
raccoon
Гость
Битовые операции с элементом QByteArray
«
:
Июль 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
вида, описанного выше. Заранее спасибо, надеюсь, объяснил понятно чего хочу.
«
Последнее редактирование: Июль 25, 2014, 07:17 от raccoon
»
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Битовые операции с элементом QByteArray
«
Ответ #1 :
Июль 25, 2014, 07:25 »
Код
C++ (Qt)
unsigned
char
b
=
(
n
<<
3
)
|
(
d
&
7
)
;
Записан
raccoon
Гость
Re: Битовые операции с элементом QByteArray
«
Ответ #2 :
Июль 25, 2014, 07:31 »
Old
, спасибо! А не могли бы вы объяснить, как это работает ?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Битовые операции с элементом QByteArray
«
Ответ #3 :
Июль 25, 2014, 07:43 »
Сдвиг на 3 бита влево и логический OR для установки младших бит из d - логические операции.
Записан
s_Creator
Гость
Re: Битовые операции с элементом QByteArray
«
Ответ #4 :
Июль 25, 2014, 16:22 »
логический
OR
это
||
а у здесь побитовый
AND (&)
с числом
7
обнуляет старшие биты числа
d
и побитовый
OR (|)
сращивает числа
n
и
d
так что 5 старших битов занимает
n
, а 3 младших
d
(имхо)
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Битовые операции с элементом QByteArray
«
Ответ #5 :
Июль 25, 2014, 16:25 »
Цитата: s_Creator от Июль 25, 2014, 16:22
логический
OR
это
||
а у здесь побитовый
AND (&)
с числом
7
обнуляет старшие биты числа
d
и побитовый
OR (|)
сращивает числа
n
и
d
так что 5 старших битов занимает
n
, а 3 младших
d
(имхо)
Все все эти операции or, and, xor - логические. Только одни работают с битами, а другие с bool.
Записан
s_Creator
Гость
Re: Битовые операции с элементом QByteArray
«
Ответ #6 :
Июль 25, 2014, 16:33 »
Цитата: Old от Июль 25, 2014, 16:25
Все все эти операции or, and, xor - логические. Только одни работают с битами, а другие с bool.
это справедливо для Delphi где вы пишите именно or and и для битовых и для логических операций.
а в С++ специально различают || и |.
Поменяйте у себя | на || и расскажите результаты.
Edit:
http://www.c-cpp.ru/books/bitovye-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
«
Последнее редактирование: Июль 25, 2014, 16:46 от s_Creator
»
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Битовые операции с элементом QByteArray
«
Ответ #7 :
Июль 25, 2014, 17:00 »
Это вы топикстартеру адресуйте/рекомендуйте. Мне это давным давно не надо.
Специально их различают или случайно, а они как были логическими так и остались, побитные они или нет - дело десятое.
«
Последнее редактирование: Июль 25, 2014, 17:09 от Old
»
Записан
s_Creator
Гость
Re: Битовые операции с элементом QByteArray
«
Ответ #8 :
Июль 25, 2014, 21:06 »
Цитата: Old от Июль 25, 2014, 17:00
побитные они или нет - дело десятое.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...