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

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

Восстановить пароль Регистрация
 
танкист34
-62 / 0 / 0
Регистрация: 15.03.2013
Сообщений: 328
26.04.2014, 18:41     Запись последних восьми бит #1
Добрый вечер! Подскажите, пожалуйста, как правильно записать 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++ Использовать битове операций для обнуления всех бит, кроме последних четырёх
Ошибка в задаче о восьми ферзях C++
создать одномерный массив из восьми чисел, а каждое второе должно выводится на экран. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для zss
5943 / 5548 / 1783
Регистрация: 18.12.2011
Сообщений: 14,168
Завершенные тесты: 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     Запись последних восьми бит
Еще ссылки по теме:

Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN C++
C++ Задача о восьми ферзях
Найти наибольшее и наименьшее значение массива из восьми элементов C++

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

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

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