русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Битовые поля

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

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

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

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

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

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

struct {

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

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

. . .

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

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

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

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

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

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

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

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

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

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

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

Просмотров: 579


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.