Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //00000000
- enum Flags
- {
- Flag1 = 1, // 0b00000001
- Flag2 = 2, // 0b00000010
- Flag3 = 4, // 0b00000100
- Flag4 = 8, // 0b00001000
- Flag5 = 16, // 0b00010000
- Flag6 = 32, // 0b00100000
- Flag7 = 64, // 0b01000000
- Flag8 = 128, // 0b10000000
- };
- struct BitFlag
- {
- uint8_t flag{ 0 };
- void set(uint8_t flagNum, uint8_t value)
- {
- value ? flag |= flagNum : flag &= ~(flagNum);
- };
- int get(uint8_t flagNum)
- {
- return flag & flagNum ? 1 : 0;
- };
- int numToFlag(uint8_t num)
- {
- return 1 << (num);
- };
- void print()
- {
- for (int i = 0; i < 8; i++)
- {
- std::cout << "Flag" << i + 1 << " : " << get(numToFlag(i)) << '\n';
- }
- }
- };
- int main()
- {
- BitFlag myFlag;
- //myFlag.flag = 0b11110111;
- //// 0b10011101
- //// 0b00001000
- //// 0b10011101
- //// 0b00001000
- //// 0b11110111
- //// 0b10010101
- //// 0b11110111
- //// 0b10010101
- //std::cout << myFlag.get(Flag3) << '\n';
- myFlag.set(Flags::Flag5, 1);
- myFlag.set(Flags::Flag8, 1);
- myFlag.set(Flags::Flag1, 1);
- myFlag.set(Flags::Flag4, 1);
- myFlag.print();
- std::cout << '\n';
- myFlag.set(Flags::Flag4, 0);
- myFlag.set(Flags::Flag3, 1);
- myFlag.set(Flags::Flag8, 0);
- myFlag.set(Flags::Flag7, 1);
- myFlag.print();
- std::cout << '\n';
- myFlag.flag = 0; //Dirty hack! Do not do like that! :()
- myFlag.print();
- std::cout << '\n';
- // 0b00010000
- // 0b10000000
- // 0b00000001
- // 0b00001000
- // 0b10011001
- myFlag.set(Flags::Flag5 | Flags::Flag8 | Flags::Flag1 | Flags::Flag4, 1);
- myFlag.print();
- std::cout << '\n';
- myFlag.set(Flags::Flag5 | Flags::Flag8 | Flags::Flag1 | Flags::Flag4, 0);
- myFlag.print();
- std::cout << '\n';
- myFlag.set(Flags::Flag1, 0);
- myFlag.set(Flags::Flag4, 0);
- myFlag.set(Flags::Flag2, 1);
- myFlag.set(Flags::Flag7, 1);
- myFlag.print();
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement