* Разредни полета
Публикувано на 25 октомври 2008 в раздел С/С++.
В езика за програмиране С могат да се дефинират набори от последователни битове. Такива набори се наричат "разредни полета". Те осигуряват връзката между високото ниво на езика и ниското ниво на апаратната част.
Разредните полета се дефинират като елементи на структура по следния начин:
unsigned int <име>:<размер>
Следният пример демонстрира дефинирането на разредни полета:
struct field{ unsigned int f1:2; unsigned int f2:3; int n; } x;
За полето f1 сме отделили 2 бита, а за f2 сме отделили 3. Обръщението към разредните полета и използването им в изрази е като обикновени елементи на структура:
x.f1 = 0; x.f2 = 3;
Ако сме записали стойност, която е по-голяма от отделеното място за разредното поле, то в полето ще се запишат толкова бита от двоичното представяне на величината, колкото е размерът на полето.
Характерен случай за използване на разредни полета, е когато е нужно да използваме като резултати от изпълнение на дадена функция само две стойности - 0 или 1. Въпреки, че този резултат може да се запише само в един бит ние все пак заделяме памет за цял int.
Друго важно приложение, е когато съставяме данни, които се характеризират освен със стойност и с параметри. Добре е да може основната стойност и параметрите да могат да се записват в една машинна дума. Например когато отпечатваме буква на екрана ние пазим нейния ASCII код, но освен това цвета на фона на символа, яркостта, и тн.
Важно: Не е възможно да се създават указатели към разредни полета и не е възможно създаването на масиви от разредни полета.
Добави коментар