Поля

Поля

Второй способ манипуляции разрядами заключается в использовании поля. Полем считается последовательность соседних разрядов в числе типа int или unsigned int. Поле устанавливается при помощи определения структуры, в котором помечается каждое поле и определяется его размер. Следующее описание устанавливает четыре 1-разрядных поля:

struct {

unsigned autfd: 1;

unsigned bldfc: 1;

unsigned undln: 1;

unsigned itals: 1;

} prnt;

Переменная prnt содержит теперь четыре 1-разрядных ноля. Обычную операцию принадлежности элемента структуры можно использовать для присвоения значении отдельным полям:

prnt.itals = 0;

prnt.undln = 1;

Поскольку каждое поле состоит только из одного разряда, мы можем использовать для присваивания лишь значение 0 или 1.

Переменная prnt запоминается в ячейке памяти, имеющей размер, равный длине числа типа int, но для нашего примера используется только четыре разряда.

Размер поля не ограничивается одним разрядом. Мы можем делать, например, так:

struct {

unsigned code1 : 2;

unsigned code2 : 2;

unsigned code3 : 8;

} prcode;

Таким путем создаются два 2-разрядных поля и одно 8-разрядное. Мы можем выполнять присваивания, подобные следующим:

prcode.code1 = 0;

prcode.code2 = 3;

prcode.code3 = 102;

Удостоверьтесь только, что значение нe превышает размер поля.

Что произойдет, если общее число объявленных вами разрядов превысит размер переменной типа int? В этом случае используется следующая ячейка памяти типа int. Одиночное поле не может перекрывать границу между двумя int, компилятор автоматически сдвигает определение перекрывающего поля таким образом, чтобы данное поле было выравнено по границе int. Если это происходит, он оставляет в первом int безымянное "пустое место".

Вы можете заполнить структуру поля с безымянными пустыми местами, используя поле без имени. Применение поля без имени с размером 0 выравнивает очередное поле по границе следующего целого:

struct {

         field1 : 1;

                  : 2;

         field2 : 1;

                  : 0;

         field3 : 1; } stuff;

Здесь есть 2-разрядный промежуток между stuff.field1 и stuff.field2, a stuff.field3 запоминается в следующем int.

Порядок размещения полей в int зависит от типа ЭВМ. В одних машинах поля располагаются слева направо, в других - справа налево.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.5.1 Поля

Из книги C++ автора Хилл Мюррей

2.5.1 Поля Использование char для представления двоичной переменой, например, переключателя включено/выключено, может показаться экстравагантным, но char является наименьшим объектом, который в С++ может выделяться независимо. Можно, однако, сгруппировать несколько таких


7.2.7 Поля Типа

Из книги Справочное руководство по C++ автора Страустрап Бьярн

7.2.7 Поля Типа Чтобы использовать производные классы не просто как удобную сокращенную запись в описаниях, надо разрешить следющую проблему: Если задан указатель типа base*, какому проиводному типу в действительности принадлежит указываемый обект? Есть три основных


8.5.14 Поля Бит

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

8.5.14 Поля Бит Описатель_члена видаидентификатор opt : константное_выражениеопределяет поле; его длина отделяется от имени поля дветочием. Поля упаковываются в машинные целые; они не являются альтернативой слов. Поле , не влезающее в оставшееся в целом место, помещается в


R.9.6 Битовые поля

Из книги Word 2007.Популярный самоучитель автора Краинский И

R.9.6 Битовые поля Конструкция описатель-члена, имеющая вид,идентификатор opt : выражение-константазадает битовое поле, длина которого отделяется от его имени двоеточием. Размещение битовых полей в объекте класса зависит от реализации. Поля упаковываются в некоторые


Таблицы и поля

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Таблицы и поля Базы данных состоят из таблиц, которые представляют широкий диапазон категорий данных. Если когда-либо вам приходилось создавать базу данных, например для обработки отчетных материалов в бизнесе, то вы могли создать одну таблицу для хранения информации о


Поля документа

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

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


12.1.4. Текстовые поля

Из книги Язык Си - руководство для начинающих автора Прата Стивен

12.1.4. Текстовые поля Чтобы отобразить поле для ввода текста и манипулировать им, применяется виджет TkEntry. Как и следовало ожидать, для указания размера, цвета и поведения предусмотрены многочисленные атрибуты. Мы приведем довольно объемный пример, иллюстрирующий


12.3.4. Текстовые поля

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

12.3.4. Текстовые поля FOX располагает полезными средствами для ввода текста. В следующем примере демонстрируется применение класса FXTextField для редактирования одной строки. Параметры определяют формат текста. Значение TEXTFIELD_PASSWD скрывает текст, являющийся паролем, TEXTFIELD_REAL


Текстовые поля

Из книги автора

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


Поля

Из книги автора

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


7. Поля

Из книги автора

7. Поля Признаки слева направо и сверху вниз (рис. 187):• все поля широкие; Рис. 187• все поля узкие или отсутствуют;• поля левые широкие;• поля левые очень узкие или отсутствуют совсем;• поля левые сужающиеся;• поля левые расширяющиеся;• поля левые неровные;• поля правые


Текстовые поля

Из книги автора

Текстовые поля Без ввода текста никак не обойтись, потому что без него потеряется смысл создания формы. Рассмотрим поля для ввода текста в одну строку, для многострочного ввода служат другие элементы, которые мы разберем позже. Однострочное поле удобно для ввода имени,


Скрытые поля

Из книги автора

Скрытые поля Вместе с формой можно передавать дополнительную информацию, которая не должна быть видна пользователю.Для передачи служебной информации используются скрытые поля. Они не видны пользователю, однако информация из них передается обработчику. Такая


9.6. Поля и отступы

Из книги автора

9.6. Поля и отступы В этом разделе мы разберем важный момент при создании веб-страниц – задание полей и отступов. Итак, начнем с