Опубликован: 02.02.2011 | Уровень: для всех | Доступ: свободно
Лекция 19:

Битовые поля

< Лекция 18 || Лекция 19: 123 || Лекция 20 >

Лабораторная работа 18. Битовые поля

Цель работы: изучить понятие, объявление и размещение в памяти битовых полей, доступ к битовым полям структуры или объединения и научиться решать задачи с использованием битовых полей на языке C++.

При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, в которой выполнена разработка структуры с битовыми полями в соответствии с постановкой задачи, ввод данных элементов структуры, их обработка и вывод на экран в указанном формате. При этом битовые поля могут использоваться только в качестве полей структуры. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи. Ограничениями на входные данные являются максимальный размер строковых данных, диапазоны числовых типов полей структуры, максимально допустимый размер массива структур в языке С++.

Теоретические сведения.

Ознакомьтесь с материалом лекции 18.

Задания к лабораторной работе.

Выполните приведенные ниже задания.

  1. Разработайте структуру, используя битовые поля для обозначения логических (битовых) значений. Структура Магазин: Наименование товара, Цена, Страна производства, Наличие в магазине, Соответствие стандарту РФ, Является товаром месяца. Объявите и заполните массив из пяти структур. Распечатайте информацию обо всех введенных товарах. Распечатайте информацию об имеющихся в магазине товарах, не соответствующих стандарту РФ.
  2. Используя объединение с битовыми полями, определите четность беззнакового целого числа по анализу старшего бита (операцию деления с остатком не использовать).
  3. Используя объединение с битовыми полями, определите кратность 8 беззнакового целого числа по анализу старших битов (операцию деления с остатком не использовать).

Указания к выполнению работы.

Каждое задание необходимо решить в соответствии с изученными методами объявления и обработки структур с битовыми полями в языке С++. При выполнении заданий следует помнить. что в языке С++ битовые поля не используют автономно, а обязательно включают во множество полей структурного типа. При объявлении битовых полей необходимо выполнить комментирование используемых битов. При выполнении задач 2 и 3 используйте внутренне представление целых чисел. В задаче 1 следует объявить массив структур, организовав его вывод в виде таблицы.

Следует реализовать каждое задание в соответствии с приведенными этапами:

  • изучить словесную постановку задачи, выделив при этом все виды данных;
  • сформулировать математическую постановку задачи;
  • выбрать метод решения задачи, если это необходимо;
  • разработать графическую схему алгоритма;
  • записать разработанный алгоритм на языке С++;
  • разработать контрольный тест к программе;
  • отладить программу;
  • представить отчет по работе.

Требования к отчету.

Отчет по лабораторной работе должен соответствовать следующей структуре.

  • Титульный лист.
  • Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
  • Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
  • Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
  • Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
  • Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
  • Выводы по лабораторной работе.
  • Ответы на контрольные вопросы.

Контрольные вопросы

  1. Какого типа объявляются битовые поля?
  2. Почему нельзя объявить битовые поля вне структуры или объединения?
  3. Как осуществляется адресация битовых полей?
  4. От чего зависит порядок размещения в памяти битовых полей?
  5. Возможно ли объявление массива битовых полей? Почему?
  6. Возможно ли объявить безымянное битовое поле? Если да, то с какой целью оно используется?
  7. Возможно ли объявить битовое поле нулевой длины? Если да, то с какой целью оно используется?
  8. Существуют ли ограничения на длину битового поля?
  9. С какой целью используются объединения с битовыми полями?
  10. Какие существуют способы обращения к битовым полям?
< Лекция 18 || Лекция 19: 123 || Лекция 20 >
Денис Курбатов
Денис Курбатов
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Андрей Садовщиков
Андрей Садовщиков
Россия