#include using namespace std; int main() { int wybor ; cin >> wybor ; switch(wybor) { case 1 : { int liczba ; int ilosc = 0 ; int tymcz = 0 ; int bufor2 ; unsigned int maska = 0x80000000; cin >> liczba ; bufor2 = liczba ; if (liczba > 0) { while (bufor2 != 0 ) { bufor2 = bufor2 >> 1 ; ilosc++ ; } bufor2 = liczba ; while (tymcz != 0x80000000) // przesunienie na maxa do prawej { bufor2 = bufor2 << 1; tymcz = bufor2 & maska ; } for (int i=0 ; i> 1 ; tymcz = bufor2 & 1 ; } bufor2 = liczba ; for (int i=0; i<32-ilosc; i++) // przepisujemy liczby od prawej bez koncowych zer { tymcz = bufor2 & maska ; // wyciągamy jakie sa kolejne bity if (tymcz == 0) { cout <<"0" ; } else if (tymcz == maska) { cout <<"1"; } bufor2 = bufor2 << 1 ; } } break ; } case 2: // liczenie zer pomiedzy skrajnymi jedynkami { int zmienna = 0 ; int licznik = 0; unsigned int maska = 1 ; int bufor = 0 ; cin >> zmienna ; bufor = zmienna & maska ; while(bufor != 1) // wyznaczamy liczbe ktora jako pierwszy bit bedzie miala skrajna jedynke { zmienna = zmienna >> 1; bufor = zmienna & maska ; } if (zmienna > 0 ) { while(zmienna != 1) // petla dziala do czasu gdy zmienna bedzie miala ostatni bit na koncu czyli 1 { bufor = zmienna & maska ; if (bufor == 0) {licznik++ ;} zmienna = zmienna >> 1 ; } } else if (zmienna < 0) { while(zmienna != -1) // petla dziala do czasu gdy zmienna bedzie miala ostatni bit na koncu czyli -1 { bufor = zmienna & maska ; if (bufor == 0) {licznik++ ;} zmienna = zmienna >> 1 ; } } cout << licznik << endl; break ; } case 3 : { int liczba ; int maska = 0x80000000 ; unsigned int maska2 =0x00000001 ; int bufor=0 ; int bufor2 =0; int war = 0; int war2 = 0 ; int suma_mask = 0x80000001 ; int suma_mask2 = 0 ; int licznik = 0 ; cin >> liczba ; bufor = liczba ; bufor2 = liczba ; bool palindrom = true ; if (liczba < 0) // dzialanie dla liczb ujemnych { for (int i=0; i<16 ; i++) { war = bufor & maska ; // sprawdzenie z lewej strony cyferki war2 = bufor2 & maska2; // sprawdzenie z prawej strony cyferki suma_mask2 = war | war2 ; if (suma_mask2 == suma_mask || suma_mask2 == 0 ) { bufor = bufor << 1 ; bufor2 = bufor2 >> 1; continue; } else { palindrom = false; break ; } } cout << palindrom ; } else if (liczba > 0) // dla liczby wiekszej od zera { while (bufor!=0) { bufor = bufor >> 1 ; licznik++ ; } bufor = liczba ; bufor = bufor << 32-licznik ; // przesuwamy max w lewo for (int j=0 ; j> 1; continue; } else // jezeli jakakolwiek liczba sie nie zgadza, to przerywamy dzialanie { palindrom = false; break ; } } cout << palindrom ; } break ; } default: { cout << "Wrong task number." ; break ; } } return 0 ; }‬