#include 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; }