Advertisement
avr39ripe

cppBitOperationExamples

Jun 15th, 2021
1,006
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. char* encodecode(char* str, char key)
  4. {
  5.     char* start{ str };
  6.  
  7.     while (*str)
  8.     {
  9.         *str ^= key; //*str = *str ^ key
  10.         ++str;
  11.     }
  12.  
  13.     return start;
  14. }
  15.  
  16. uint8_t maskLength(uint8_t mask)
  17. {
  18.     uint8_t maskLength{ 0 };
  19.     uint8_t maskShift{ mask };
  20.  
  21.     while (maskShift)
  22.     {
  23.         maskShift <<= 1; // maskShift = maskShift << 1
  24.         ++maskLength;
  25.     }
  26.     return maskLength;
  27. }
  28.  
  29. int main()
  30. {
  31.     //uint8_t byteA{ 0b01010101 };
  32.     //uint8_t byteB{ 0b10011110 };
  33.     //uint8_t byteRes{ 0 };
  34.  
  35.     //// 0b01010101
  36.     //// 0b10011110
  37.     ////
  38.     //// 0b11001010
  39.     //// 0b10011110
  40.     ////
  41.     //// 0b01010101
  42.     //// 0b01010101
  43.  
  44.     //byteRes = byteA ^ byteB;
  45.     //
  46.     //std::cout << +byteA << '\n';
  47.     //std::cout << +byteRes << '\n';
  48.  
  49.     //byteRes = byteRes ^ byteB;
  50.     //std::cout << +byteRes << '\n';
  51.  
  52.  
  53.     //char str[]{ "Some top secret message about this summer! :(" };
  54.  
  55.     //std::cout << "Original str:\n";
  56.     //std::cout << str << '\n';
  57.     //std::cout << "\nEncoded str:\n";
  58.     //std::cout << encodecode(str, 'G') << '\n';
  59.     //std::cout << "\nDecoded str:\n";
  60.     //std::cout << encodecode(str, 'q') << '\n';
  61.  
  62.     // 192.168.[00001 010].2/21
  63.     // 192.168.10.2/21
  64.     //
  65.     // 255.255.255.0
  66.  
  67.     uint8_t ipA{ 0b10100001 };
  68.     uint8_t ipB{ 0b10100101 };
  69.     uint8_t ipC{ 0b11100001 };
  70.     uint8_t ipD{ 0b11101101 };
  71.  
  72.     uint8_t mask{ 0b11110000 };
  73.  
  74.     // mask
  75.     // 0b11110000
  76.     // 0b00001111
  77.  
  78.     // ipA
  79.     // 0b10100001
  80.     // 0b00001111
  81.     // 0b00000001
  82.  
  83.  
  84.  
  85.     std::cout << +maskLength(mask) << '\n';
  86.  
  87.     uint8_t netA = ipA >> maskLength(mask);
  88.     uint8_t hostA = ipA & (~mask);
  89.  
  90.     uint8_t netB = ipB >> maskLength(mask);
  91.     uint8_t hostB = ipB & (~mask);
  92.  
  93.     uint8_t netC = ipC >> maskLength(mask);
  94.     uint8_t hostC = ipC & (~mask);
  95.  
  96.     uint8_t netD = ipD >> maskLength(mask);
  97.     uint8_t hostD = ipD & (~mask);
  98.  
  99.     std::cout << +ipA << ' ' << +netA << ' ' << +hostA << '\n';
  100.     std::cout << +ipB << ' ' << +netB << ' ' << +hostB << '\n';
  101.     std::cout << +ipC << ' ' << +netC << ' ' << +hostC << '\n';
  102.     std::cout << +ipD << ' ' << +netD << ' ' << +hostD << '\n';
  103.  
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement