Битовые поля
Лабораторная работа 18. Битовые поля
Цель работы: изучить понятие, объявление и размещение в памяти битовых полей, доступ к битовым полям структуры или объединения и научиться решать задачи с использованием битовых полей на языке C++.
При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, в которой выполнена разработка структуры с битовыми полями в соответствии с постановкой задачи, ввод данных элементов структуры, их обработка и вывод на экран в указанном формате. При этом битовые поля могут использоваться только в качестве полей структуры. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи. Ограничениями на входные данные являются максимальный размер строковых данных, диапазоны числовых типов полей структуры, максимально допустимый размер массива структур в языке С++.
Теоретические сведения.
Ознакомьтесь с материалом лекции 18.
Задания к лабораторной работе.
Выполните приведенные ниже задания.
- Разработайте структуру, используя битовые поля для обозначения логических (битовых) значений. Структура Магазин: Наименование товара, Цена, Страна производства, Наличие в магазине, Соответствие стандарту РФ, Является товаром месяца. Объявите и заполните массив из пяти структур. Распечатайте информацию обо всех введенных товарах. Распечатайте информацию об имеющихся в магазине товарах, не соответствующих стандарту РФ.
- Используя объединение с битовыми полями, определите четность беззнакового целого числа по анализу старшего бита (операцию деления с остатком не использовать).
- Используя объединение с битовыми полями, определите кратность 8 беззнакового целого числа по анализу старших битов (операцию деления с остатком не использовать).
Указания к выполнению работы.
Каждое задание необходимо решить в соответствии с изученными методами объявления и обработки структур с битовыми полями в языке С++. При выполнении заданий следует помнить. что в языке С++ битовые поля не используют автономно, а обязательно включают во множество полей структурного типа. При объявлении битовых полей необходимо выполнить комментирование используемых битов. При выполнении задач 2 и 3 используйте внутренне представление целых чисел. В задаче 1 следует объявить массив структур, организовав его вывод в виде таблицы.
Следует реализовать каждое задание в соответствии с приведенными этапами:
- изучить словесную постановку задачи, выделив при этом все виды данных;
- сформулировать математическую постановку задачи;
- выбрать метод решения задачи, если это необходимо;
- разработать графическую схему алгоритма;
- записать разработанный алгоритм на языке С++;
- разработать контрольный тест к программе;
- отладить программу;
- представить отчет по работе.
Требования к отчету.
Отчет по лабораторной работе должен соответствовать следующей структуре.
- Титульный лист.
- Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
- Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
- Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
- Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
- Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
- Выводы по лабораторной работе.
- Ответы на контрольные вопросы.
Контрольные вопросы
- Какого типа объявляются битовые поля?
- Почему нельзя объявить битовые поля вне структуры или объединения?
- Как осуществляется адресация битовых полей?
- От чего зависит порядок размещения в памяти битовых полей?
- Возможно ли объявление массива битовых полей? Почему?
- Возможно ли объявить безымянное битовое поле? Если да, то с какой целью оно используется?
- Возможно ли объявить битовое поле нулевой длины? Если да, то с какой целью оно используется?
- Существуют ли ограничения на длину битового поля?
- С какой целью используются объединения с битовыми полями?
- Какие существуют способы обращения к битовым полям?