Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //struct Flags
- //{
- // bool f0;
- // bool f1;
- // bool f2;
- // bool f3;
- // bool f4;
- // bool f5;
- // bool f6;
- // bool f7;
- //};
- struct Flags
- {
- uint8_t flags; // 0b10101010
- void set(uint8_t flag, bool val);
- bool get(uint8_t flag);
- void print(); // outputs flag in binary form
- };
- // Flags myFlags; 0b00000000
- // myFlags.set(0,true); 0b00000001
- // myFlags.set(2,true); 0b00000101
- // myFlags.get(7); //false
- // myFlags.get(0); //true
- // myFlags.set(0,false); 0b00000100
- // // myFlags.get(0); //false
- char* encodecode(char* str, char key)
- {
- char* start{ str };
- for (; *str; *str ^= key, ++str);
- return start;
- }
- int maskLen(uint8_t mask)
- {
- int maskLen{ 0 };
- for (;mask; mask <<= 1, ++maskLen);
- return maskLen;
- }
- int main()
- {
- // << bit shift left
- // >> bit shift right
- // ~ bitwise NOT - ! - logical NOT
- // | bitwise OR - || or - logical OR
- // & bitwise AND - && and - logical AND
- // ^ bitwise XOR - eXclusive OR
- // a <<= b -> a = a << b
- // a >>=b -> a = a >> b
- // a |= b -> a = a | b
- // a &= b -> a = a & b
- // a ^= b -> a = a ^ b
- // 16 [0-9, a-f]
- // 12
- // 12 % 10 -> 2
- // 12 / 10 -> 1
- // 1 % 10 -> 1
- //int answer{ 5 };
- // 101
- // 5 % 2 -> 1
- // 5 / 2 -> 2
- // 2 % 2 -> 0
- // 2 /2 -> 1
- // 1 % 2 -> 1
- //int number{ 26 };
- // 0x1a
- // 26 % 16 -> 10
- // 26 / 16 -> 1
- // 1 % 16 -> 1
- ///int binAnswer{ 0x101 }; // 2 ^ 0 * 1 + 2 ^ 1 * 0 + 2 ^ 2 * 1 =1 + 0 + 4 = 5
- //int digit{ 10 }; // 'A'
- //std::cout << 'A' + (digit - 10)<< '\n';
- uint16_t byteA{ 0b00000100 };
- uint16_t byteB{ 0b00001101 };
- uint8_t result{ 0 };
- result = byteA ^ byteB;
- // 0b00000100
- // 0b00001101
- // 0b00001001
- // 0b00001101
- // 0b00000100
- // 0b00000101
- //~
- // 0b11111010 //250
- //~
- // 0b00000101
- // 0b00000101
- // << 2
- // 0b00010100
- //result = ((byte << 2) >> 2);
- std::cout << +result << '\n';
- char str[]{ "Hello, encrypted world!" };
- std::cout << str << '\n';
- std::cout << encodecode(str, 'Z') << '\n';
- std::cout << encodecode(str, 'X') << '\n';
- uint8_t ipA{ 0b10110001 };
- uint8_t ipB{ 0b10110101 };
- uint8_t ipC{ 0b11010101 };
- uint8_t ipD{ 0b11010011 };
- uint8_t mask{ 0b11110000 };
- //ipA & mask
- //0b10110001
- //0b11110000
- //0b10110000
- //ipB & mask
- //0b10110101
- //0b11110000
- //0b10110000
- //ipD
- //0b11010011
- //0b11110000
- //0b11010000
- //0b10110000
- bool oneNet{ (ipA & mask) == (ipD & mask)};
- uint8_t hostAddr{ (uint8_t)(ipA & (~mask)) };
- uint8_t netAddr{ uint8_t(ipA >> maskLen(mask)) };
- std::cout << std::boolalpha << oneNet << '\n';
- std::cout << "IP: " << +ipA << '\n';
- std::cout << "Mask length: " << maskLen(mask) << '\n';
- std::cout << "Net addr: " << +netAddr << '\n';
- std::cout << "Host addr: " << +hostAddr << '\n';
- // 192 168 1 129 - 128 - 131 /30 /24 /23
- // 255 255 255 252
- // 1000 00 00
- // 1111 11 00
- }
Add Comment
Please, Sign In to add comment