-
Huston mamy problem!
hej;) z programowania nie będę ukrywał - jestem zielony, próbuję się go uczyć, ale ciężko mi to idzie. Ostatnio na zajęciach dostałem program do uzupełnienia i nie mogę sobie z nim poradzić. Proszę o pomoc.
Kod:
// ZAPOZNAJ SIE Z OPERACJAMI BITOWYMI I UZUPELNIJ PROGRAM:
// DOPISZ 2 FRAGMENTY, KTORE DLA DANEJ LICZBY m powoduja , ze program:
// ustawia "1" na bitach b7,b6 - ustawia "0" na bitach b1,b0 - reszte bitow neguje.
// Wynik zmienionej liczby m pokazuje w postaci bitowej.
//======================================================================================================
#include <iostream.h>
//--------------------------------------------------------------------------
// Funkcja drukuje bity liczby a o dlugosci 1 bajta(8 bitow)
void pisz_bin (unsigned char a)
{
unsigned char maska=128, //b7=1, pozostale bity =0 ,zmienna 8-mio bitowa==1 bajt
k=0; //LICZNIK
while(k<8)
{
//(a & maska) "wycina" z liczby a bit o tym samym numerze, na ktorym stoi "1" w maska
if( a & maska )cout<<"1"; else cout<<"0";
//przesuwanie 1 w zmiennej maska o jedna pozycje w prawo
maska >>=1; // to samo co: maska=maska>>1; lub maska /=2; lub maska=maska/2;
k++;
}
}
//==========================================================================
int main ()
{ int a;
unsigned char m; //1 bajt <0;255>
cout<<"OPERACJE NA BITACH - zacznij od liczby m=2\n";
while(1)
{
cout << "\n\nWczytaj liczbe calkowita [0;255] ";
cin>>a; m=(unsigned char)a;
cout << " m :"; pisz_bin(m); cout << "\tliczba m, bity: b7,b6,b5,b4,b3,b2,b1,b0\n";
cout << " ~m :"; pisz_bin(~m); cout << "\tm - negacja bitow\n";
cout << "m<<2 :"; pisz_bin(m<<2); cout << "\tm pomnozone przez 4 = przes.w lewo o 2 bity\n";
cout << "m>>1 :"; pisz_bin(m>>1); cout << "\tm podzielone przez 2 = przes. w prawo o 1 bit\n";
cout << "m |128 :"; pisz_bin(m | 128); cout << "\tm z ustawiona 1 na najstarszym bicie b7\n";
cout << "m &(~2) :"; pisz_bin(m &(~2)); cout << "\tm z ustawionym 0 na bicie b1\n";
cout << "m^4 :"; pisz_bin(m^4); cout << "\tm z zanegowanym bitem b2\n";
// uzupelnij
}
//===========================================================================
system("pause");
return 0;
}
-