Operatory bitowe w zadaniach
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #include <iostream> #include <iomanip> #include <bitset> using namespace std; int main(int argc, char** argv) { int a = 5; //101 cout << "W sysemie 10:" << a << endl << " w sysemie 2:"<< bitset<8>(a) << endl; cout <<"Zerujemy ostatni bit:"; a >>=1; a <<=1; cout << bitset<8>(a) << endl; //lepsze rozwiązanie: a = 5; a = a & 0b11111110; //operator & wszędzie jedynka, tylko tam gdzie ma być zerowany - 0 //lepiej napisać a= a & 254; //albo a= a & 0xfe; ///////////////////////////////////////// //Zad 2 - ustaw pierwszy bit (ostatni w kolejności od prawej do lewej) na 1 a = a | 0b00000001; //ustawiamy 1 tylko tam gdzie będzie zawsze 1 //Zad 3 - zmienić bit pierwszy na przeciwny // 0b01010100 a = a ^ 0b00000001; //Zad 4 - wyłuskać ostatni bit a = 0b01010101; // 00000001 a = a & 0b00000001; //wyzeruje wszystkie inne bity oprócz ostatniego //wyłuskaj trzeci bit (od końca) a = a & 0b00000100; ///////////////////////////////////////// // To samo na bajtach int a=65535; //4 - bajty po 8 bit (32 cyfry w systemie dwójkowym) //wyłuskać najniższy bajt a = a & 0x000000ff; // każdy bajt to 2 cyfry np. 00 - pusty, ff oznacza pełny (jak 1) a 00 pusty //wyłuskać przedostatni bajt a = a & 0x0000ff00; //jeśli przedostatni bajt zawiera np. kolor g //dodatkowo można go przesunąć a >>= 8; // 0x000000ff //Zad 6. Wyzerować najmłodszy bajt (pierwszy od końca) a = a & 0xffffff00; //Zad7. Ustawić ostatni bajt na 11111111 a = a | 0x000000ff; cout << "Wypisanie w dwojkowym:" << bitset<32>(a) << endl; return 0; } |