Чтение битового поля - 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
.
Код не содержит функций для чтения и записи битового поля, так как это не является основной задачей данного кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д