Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- int main()
- {
- // 0xffff
- // hex system 0..9, a - 10 b - 11 c -12 d -13 e -14 f -15
- // ff -> f * 16 ^ 0 + f * 16 ^ 1 = 15 + 240 = 255
- //uint8_t byte{0x1a}; // 16^0 * a + 16^1 * 1 = 1 * 10 + 16 * 1 = 10 + 16 = 26
- //uint8_t byte{ 0b1111 }; // (1 * 2 ^ 0) + (1 * 2 ^ 1) + (1 * 2 ^ 2) + (1 * 2 ^ 3) = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15
- // ~ - bitwise NOT - unary op
- // << - bitwise shift left - binary op
- // >> - bitwise shift right - binary op
- // | - bitwise OR - binary op
- // & - bitwise AND - binary op
- // ^ - bitwise XOR - binary op
- // <<= a = a << 1 -> a <<= 1
- // >>= a = a >> 4 -> a >>= 4
- // |= a = a | b -> a |= b
- // &= a = a & 0b0101 -> a &= 0b0101
- // ^= a = a ^ 42 -> a ^= 42
- // /4
- uint8_t ip1{ 0b01100111 };
- uint8_t ip2{ 0b01101101 };
- uint8_t ip3{ 0b10100111 };
- uint8_t ip4{ 0b01101110 };
- uint8_t mask{ 0b11110000 };
- uint8_t maskLength{0};
- bool sameNet{ false };
- sameNet = ((ip1 & mask) == (ip3 & mask));
- std::cout << std::boolalpha << sameNet << '\n';
- //for (uint8_t invMask{ (uint8_t)~mask }; (invMask >>= 1); --maskLength);
- for (uint8_t maskSh{ mask }; maskSh; maskSh <<= 1, ++maskLength);
- /*for (uint8_t maskSh{ mask }; maskSh; maskSh <<= 1)
- {
- ++maskLength;
- }
- {
- uint8_t maskSh{ mask };
- while (maskSh != 0)
- {
- maskSh <<= 1;
- ++maskLength;
- }
- }*/
- std::cout << "maskLength = " << +maskLength << '\n';
- //ip1 0b01100111
- //mask 0b11110000
- //ip1 0b01100111
- //~mask 0b00001111
- // 0b00000111
- uint8_t host{0};
- uint8_t net{0};
- net = ip1 >> maskLength;
- host = ip1 & (~mask);
- std::cout << "ip1 = " << +ip1 << " net = " << +net << " host = " << +host <<'\n';
- net = ip2 >> maskLength;
- host = ip2 & (~mask);
- std::cout << "ip2 = " << +ip2 << " net = " << +net << " host = " << +host << '\n';
- net = ip3 >> maskLength;
- host = ip3 & (~mask);
- std::cout << "ip3 = " << +ip3 << " net = " << +net << " host = " << +host << '\n';
- net = ip4 >> maskLength;
- host = ip4 & (~mask);
- std::cout << "ip4 = " << +ip4 << " net = " << +net << " host = " << +host << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement