Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
#1

Запись последних восьми бит - C++

26.04.2014, 18:41. Просмотров 223. Ответов 8
Метки нет (Все метки)

Добрый вечер! Подскажите, пожалуйста, как правильно записать 8-мь последних бит переменной типа int в переменную массива QByteArray, которая занимает 1 байт. Что-то никакой простой алгоритм в голову не приходит, кроме как проверять значения каждого бита переменной побитовым умножением и уже непосредственно записывать 1 или 0 в однобайтовую переменную. Но этот подход очень долгий.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 18:41     Запись последних восьми бит
Посмотрите здесь:

Написать класс чисел, для которых определено сложение и вычитание по модулю восьми C++
НОД восьми чисел C++
C++ Использовать битове операций для обнуления всех бит, кроме последних четырёх
Ошибка в задаче о восьми ферзях C++
Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN C++
C++ Задача о восьми ферзях
Найти наибольшее и наименьшее значение массива из восьми элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6180 / 5783 / 1872
Регистрация: 18.12.2011
Сообщений: 14,774
Завершенные тесты: 1
26.04.2014, 18:45     Запись последних восьми бит #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
union A
{
   int n;
   char c[4];
};
int main()
{
   A a;
   a.n=12345678;
...
   QbyteArray[i]=a.c[3];
}
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.04.2014, 18:53  [ТС]     Запись последних восьми бит #3
zss, спасибо, а можете сказать смысловую нагрузку вот этой строки
C++ (Qt)
1
QbyteArray=a.c[3];
zss
Модератор
Эксперт С++
6180 / 5783 / 1872
Регистрация: 18.12.2011
Сообщений: 14,774
Завершенные тесты: 1
26.04.2014, 18:57     Запись последних восьми бит #4
Я не знаю структуру Вашего массива QbyteArray.
Если это массив символов, то QbyteArray[i]=a.c[3];
Запишет в i-ый элемент массива QbyteArray 4-й байт из переменной a.
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.04.2014, 19:00  [ТС]     Запись последних восьми бит #5
zss, дак QbyteArray это не имя массива, это тип данных
zss
Модератор
Эксперт С++
6180 / 5783 / 1872
Регистрация: 18.12.2011
Сообщений: 14,774
Завершенные тесты: 1
26.04.2014, 19:03     Запись последних восьми бит #6
Ну тогда что-то типа
C++
1
2
3
QbyteArray  qq[N];
...
qq[i]=a.c[3];
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.04.2014, 19:09  [ТС]     Запись последних восьми бит #7
zss, спасибо, я вроде понял, только a.c[3] даст нам старший байт, а мне надо a.c[0];
Хитро придумали, так бы циклом пилил.
zss
Модератор
Эксперт С++
6180 / 5783 / 1872
Регистрация: 18.12.2011
Сообщений: 14,774
Завершенные тесты: 1
26.04.2014, 19:19     Запись последних восьми бит #8
Младший байт можно гораздо проще
C++
1
2
3
    int n=0x01020304;
    char c;
    c=(char)n;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2014, 19:24     Запись последних восьми бит
Еще ссылки по теме:

C++ Варианты размещения восьми ферзей на шахматной доске
Реализовать алгоритм всех возможных комбинаций восьми ферзей C++
Расстановка восьми ферзей на шахматной доске так, чтобы ни один не угрожал другому C++
Бит 8, младший и старший бит (по книге) C++
переход с 32 бит на 64 бит C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.04.2014, 19:24  [ТС]     Запись последних восьми бит #9
zss, спасибо, я уже то заюзал, к тому же мне ещё и предпоследний понадобился.
Yandex
Объявления
26.04.2014, 19:24     Запись последних восьми бит
Ответ Создать тему
Опции темы

Текущее время: 08:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru