* Разредни полета
Публикувано на 25 октомври 2008 в раздел С/C++.
В езика за програмиране С могат да се дефинират набори от последователни битове. Такива набори се наричат „разредни полета“. Те осигуряват връзката между високото ниво на езика и ниското ниво на апаратната част.
Разредните полета се дефинират като елементи на структура по следния начин:
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 код, но освен това цвета на фона на символа, яркостта, и тн.
Важно: Не е възможно да се създават указатели към разредни полета и не е възможно създаването на масиви от разредни полета.
Пусни коментар
Категории
- Бази от Данни (39)
- Вероятности (30)
- История (14)
- Кучета (67)
- Лада Нива (91)
- Математика (159)
- Методика (52)
- Общи работи (107)
- ПИК-3 Java (38)
- Политика (40)
- Програмни Среди (1)
- ПТСК (37)
- С/C++ (45)
- Семейни (15)
- Физика (35)
- ХHTML/JS (25)
- Храна (11)
Нови
- Как да разрежем хляба?
- Здравей бебе!
- Какво означават метеорологичните кодове?
- Берра проправя пътеки
- Задача от YES