Здесь показаны различия между двумя версиями данной страницы.
— |
bitovye_polja [2010/10/19 14:37] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Битовые поля ====== | ||
+ | Мы с Вами рассматривали понятие структуры. Полями структур могут быть не только переменные, но и другие образования, в частности, поля битов. Хотя правила языка не имеют ограничений на характер этих полей, кроме требования, чтобы они помещались в объеме машинного слова, в типичных применениях поля битов служат для хранения целых данных (чаще типа unsigned). | ||
+ | Описание поля битов состоит из описания типа поля, его имени и указанного после двоеточия размера поля в битах, например: unsigned status: 6;. | ||
+ | |||
+ | Если имя поля опущено, то создается скрытое поле. Если размер поля битов представлен числом 0, то следующее поле битов начнется с границы машинного слова. | ||
+ | |||
+ | Пример. | ||
+ | <file> | ||
+ | #include <iostream> | ||
+ | using namespace std; | ||
+ | void Binary(unsigned); | ||
+ | void main() | ||
+ | { | ||
+ | struct Bits | ||
+ | { | ||
+ | unsigned bit1: 3; | ||
+ | unsigned bit2: 2; | ||
+ | unsigned bit3: 3; | ||
+ | } Good; | ||
+ | |||
+ | Good.bit1 = 4; | ||
+ | Good.bit2 = 3; | ||
+ | Good.bit3 = 6; | ||
+ | cout<<"Show: "<<Good.bit1<<" "; | ||
+ | cout<<Good.bit2<<" "; | ||
+ | cout<<Good.bit3<<"\n\n"; | ||
+ | cout << "Sum: "; | ||
+ | Binary(Good.bit1 + Good.bit2 + Good.bit3); | ||
+ | } | ||
+ | // Функция выводит на экран двоичное представление числа A. | ||
+ | void Binary (unsigned A) | ||
+ | { | ||
+ | int i,N; | ||
+ | if(A>255) | ||
+ | N = 15; | ||
+ | else | ||
+ | N = 7; | ||
+ | for (i=N; i >= 0; i--) | ||
+ | { | ||
+ | cout<<((A>>i)&1); | ||
+ | if(i==8) | ||
+ | cout<<" "; | ||
+ | } | ||
+ | cout<<"\n\n"; | ||
+ | } | ||
+ | </file> |