diff options
| author | Syndamia <kamen@syndamia.com> | 2023-10-19 19:40:08 +0300 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2023-10-19 19:40:08 +0300 |
| commit | fbbe586d25b1ebaf66fe2e92e1986bb5debf961d (patch) | |
| tree | 58f288b71fd5d1e046158b442438ea282285a619 /week02/exercise04.cpp | |
| parent | a597f37a109398549d8ab098a2d6de19a4a1b4b8 (diff) | |
| download | upp-2023-solutions-fbbe586d25b1ebaf66fe2e92e1986bb5debf961d.tar upp-2023-solutions-fbbe586d25b1ebaf66fe2e92e1986bb5debf961d.tar.gz upp-2023-solutions-fbbe586d25b1ebaf66fe2e92e1986bb5debf961d.zip | |
[w2] Added solutions
Diffstat (limited to 'week02/exercise04.cpp')
| -rw-r--r-- | week02/exercise04.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/week02/exercise04.cpp b/week02/exercise04.cpp new file mode 100644 index 0000000..2e83fbb --- /dev/null +++ b/week02/exercise04.cpp @@ -0,0 +1,18 @@ +#include <iostream> + +int main() { + unsigned int address; + std::cin >> address; + // Искаме най-левите 8 бита, означава че искаме да "издръпнем" десните 32-8=24 бита + int firstOctet = (address >> 24); + // Искаме вторите най-леви 8 бита, така че издръпваме най-левите 16 бита (32-16=16) + // и от тези 16 бита използваме маска, за да вземем най-десните 8 + // Маската ни десетично е 2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 + // За подробности с маски, вижте решението на 2ра задача + int secondOctet = (address >> 16) & 255; + // Същата идея, искаме третите най-леви 8 бита, така че дръпваме отдясно битвоте, така че + // търсените битове да са в най-дясно и с маска премахваме всичко освен тези 8 бита + int thirdOctet = (address >> 8) & 255; + int fourthOctet = address & 255; + std::cout << firstOctet << '.' << secondOctet << '.' << thirdOctet << '.' << fourthOctet << std::endl; +} |
