Чтение битового поля - C (СИ)
Формулировка задачи:
- struct BitField
- {
- unsigned int i2 : 2;
- unsigned int i4 : 4;
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- BitField bfVar;
- bfVar.i2 = 2;
- bfVar.i4 = 7;
- ...
- }
Решение задачи: «Чтение битового поля»
- //=================================================================================================
- struct TKeyFlags
- {
- //-------------------------------------------------------------------------------------------------
- public :
- //-------------------------------------------------------------------------------------------------
- uint8_t Old :1;
- uint8_t :6;
- uint8_t Current:1;
- //-------------------------------------------------------------------------------------------------
- static TKeyFlags LongTimeUp;
- static TKeyFlags JustUp;
- static TKeyFlags LongTimeDown;
- static TKeyFlags JustDown;
- //-------------------------------------------------------------------------------------------------
- TKeyFlags ( );
- //-------------------------------------------------------------------------------------------------
- TKeyFlags (bool Current ,
- bool Old );
- //-------------------------------------------------------------------------------------------------
- bool operator == (TKeyFlags &KeyFlags );
- //-------------------------------------------------------------------------------------------------
- };
- //=================================================================================================
Объяснение кода листинга программы
В данном коде определен класс TKeyFlags
, который содержит битовые поля Old
и Current
. Битовое поле Old
имеет размер 8 бит, а битовое поле Current
также имеет размер 8 бит. В классе также определены статические переменные LongTimeUp
, JustUp
, LongTimeDown
и JustDown
, которые являются экземплярами класса TKeyFlags
.
В конструкторе класса TKeyFlags
определены два варианта инициализации:
1) TKeyFlags(bool Current, bool Old)
- инициализация с использованием значений переменных Current
и Old
.
2) TKeyFlags()
- инициализация без аргументов, при которой оба битовых поля сбрасываются в 0.
Также в классе определен метод operator==
, который проверяет на равенство два экземпляра класса TKeyFlags
.
Код не содержит функций для чтения и записи битового поля, так как это не является основной задачей данного кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д