Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
53
Добавлен:
11.05.2015
Размер:
547.84 Кб
Скачать

Битовые поля

При дефиците памяти может возникнуть необходимость запаковать несколько объектов в одно слово машины. Одна из обычных ситуаций – это объединение групп однобитовых флажков. Битовое поле может быть только элементом структуры или объединения и вне этих объектов не встречается. Назначение битовых полей – обеспечить удобный доступ к отдельным битам данных. С помощью битовых полей можно формировать объекты с длиной внутреннего представления не кратной байту. Битовые поля не имеют адресов и не могут объединяться в массивы.

Битовые поля полезны по следующим причинам:

1. Если ограничено место для хранения информации, можно сохранить несколько логических переменных в одном байте.

2. Некоторые интерфейсы передают информацию, закодировав биты в один байт.

3. Некоторым процедурам кодирования необходимо получить доступ к отдельным битам в байте.

Описание структуры с битовыми полями имеет следующий формат:

struct {

<тип 1> <имя поля 1>:<ширина поля 1>;

<тип 2> <имя поля 2>:<ширина поля 2>;

. . .

} <имя структуры>;

где <тип i> - тип поля, который может быть только int (signed или unsigned);

<ширина поля i> - целое неотрицательное десятичное число, не превышающее разрядности слова конкретной ЭВМ.

Разрешается не указывать имени поля, что означает пропуск (неиспользование) соответствующего указанной ширине количества бит. Нулевая длина вводится, когда необходимо, чтобы следующее поле разместилось с начала очередного слова конкретной ЭВМ.

Вместо struct может употребляться union.

Для обращения к полям используются те же конструкции, что и для обращения к обычным элементам структур:

<имя структуры>.<имя поля i>

(*<указатель на структуру>).<имя поля i>

<указатель на структуру> -> <имя поля i>

Нельзя получить адрес переменной битового поля. Переменные битового поля не могут помещаться в массив. Переходя с компьютера на компьютер нельзя быть уверенным в порядке изменения битов (слева на право или справо налево). Любая программа использует битовые поля и зависит от компьютера. Можно смешивать различные структурные переменные в битовых полях.

Попытка присвоить нецелое значение, либо значение, слишком большое для указанного поля, приведет к возникновению ошибки. Обычно оказывается полезным определить массив символических констант для всевозможных значений битового поля и использовать введенные символические имена.

Практический раздел Виртуальные лабораторные работы

По дисциплине ОАиП часть 1 студенты выполняют 2 виртуальные лабораторные работы.

Каждая виртуальная лабораторная работа выполняется студентом в соответствии с полученным им заданием.

Средой разработки является MicrosoftVisualStudio2005. Язык разработки Си. Программа должна быть откомпилирована в формате «Release-версии». Результаты выполнения лабораторных работ оформляются в виде отчета (см. таблицу ниже).

Материалы, предоставляемые на проверку:

-файлы проекта;

-откомпилированные программные модули;

-откомпилированные программные модули в формате «Release-версии»,

-отчет по лабораторным работам в электронном виде.

Все упаковывается и высылается по электронной почте преподавателю.

Содержание отчета лабораторной работы

Наименование пункта отчета

Краткая характеристика

Титульный лист

См. пример ниже

Цель

Формулировка цели выполнения лабораторной работы

Задание по лабораторной работе

Формулировка задания

Листинг кода программы

Листинг кода программы должен быть с комментариями

Интерфейсы работы программы

Основные результаты работы программы в виде копий экранов.

Выводы

Формулировка основных выводов по проделанной работе.

ЗАДАНИЯ ДЛЯ ВИРТУАЛЬНЫХ ЛАБОРАТОРНЫХ РАБОТ