Программирование на языке высокого уровня. Марапулец Ю.В. - 57 стр.

UptoLike

Составители: 

struct mystruct
{
int i:2;
unsigned j:5;
int:4;
int k:1;
unsigned m:4;
} a, b, c;
размещение в памяти следующее :
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
| m | k | не использу- | j | I |
ется
Для знаковых полей старший левый бит интерпретируется как знак. Например, ес-
ли в поле шириной 2 бита записано двоичное 11, то это интерпретируется как 3 для типа
unsigned, но как -1 для типа int. Битовые поля могут быть определены только в структу-
рах, объединениях и классах. Доступ к ним осуществляется с помощью тех же операто-
ров
. и ->.
Битовые поля могут быть любого целого типа. Имя поля может отсутствовать, та-
кие поля служат для выравнивания на аппаратную границу. Доступ к полю осуществля-
ется обычным способом - по имени. Адрес поля получить нельзя, однако в остальном
битовые поля можно использовать точно так же, как обычные поля структуры. Следует
учитывать, что операции с отдельными битами реализуются гораздо менее эффективно,
чем с байтами и словами, так как компилятор должен генерировать специальные коды, и
экономия памяти под переменные оборачивается увеличением объема кода программы.
Размещение битовых полей в памяти зависит от компилятора и аппаратуры.
В заключение изучения структур рассмотрим пример, демонстрирующий их воз-
можности. В примере создается структура Name, полями которой являются фамилия и
имя, далее создаются функции ввода и вывода для полей структуры Name. В исполняе-
мом коде создаются 2 объекта (first, second) структуры Name и осуществляется ввод фа-
милий и имен 2 человек в созданные объекты структуры и дальнейший их вывод на эк-
ран. В результате выполнения программы на экран будет выведен следующий текст:
Программа, использующая структуры.
Введите фамилию: Иванов
Введите имя: Иван
Введите фамилию: Петров
Введите имя: Петр
Иванов Иван
Петров Петр
Для завершения нажмите любую клавишу
#include <stdio.h>
#include <conio.h>
57
struct mystruct
{
         int i:2;
         unsigned j:5;
         int:4;
         int k:1;
         unsigned m:4;
} a, b, c;

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

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
|   m | k | не использу- |          j      | I |
                  ется

      Для знаковых полей старший левый бит интерпретируется как знак. Например, ес-
ли в поле шириной 2 бита записано двоичное 11, то это интерпретируется как 3 для типа
unsigned, но как -1 для типа int. Битовые поля могут быть определены только в структу-
рах, объединениях и классах. Доступ к ним осуществляется с помощью тех же операто-
ров . и ->.
      Битовые поля могут быть любого целого типа. Имя поля может отсутствовать, та-
кие поля служат для выравнивания на аппаратную границу. Доступ к полю осуществля-
ется обычным способом - по имени. Адрес поля получить нельзя, однако в остальном
битовые поля можно использовать точно так же, как обычные поля структуры. Следует
учитывать, что операции с отдельными битами реализуются гораздо менее эффективно,
чем с байтами и словами, так как компилятор должен генерировать специальные коды, и
экономия памяти под переменные оборачивается увеличением объема кода программы.
Размещение битовых полей в памяти зависит от компилятора и аппаратуры.
      В заключение изучения структур рассмотрим пример, демонстрирующий их воз-
можности. В примере создается структура Name, полями которой являются фамилия и
имя, далее создаются функции ввода и вывода для полей структуры Name. В исполняе-
мом коде создаются 2 объекта (first, second) структуры Name и осуществляется ввод фа-
милий и имен 2 человек в созданные объекты структуры и дальнейший их вывод на эк-
ран. В результате выполнения программы на экран будет выведен следующий текст:

Программа, использующая структуры.

Введите фамилию: Иванов
Введите имя:     Иван
Введите фамилию: Петров
Введите имя:     Петр

Иванов         Иван
Петров         Петр

Для завершения нажмите любую клавишу

#include 
#include 


                                             57