Tytuł: DziaÂłanai na bitach Wiadomość wysłana przez: admin Marzec 20, 2013, 10:10:48 PrzesuniĂŞcie w lewo - polega na dopisaniu do prawej strony liczby bitowej zera, po dopisaniu lewy najstarszy bit znika, tak aby zachowaĂŚ sta³¹ liczbĂŞ bitĂłw.
a<<b Przesuniecie w prawo - polega na dopisaniu zera do lewej strony liczby bitowej, po dopisaniu z lewej strony zera znika najmÂłodszy bit ( skrajny prawy). Lub przesuniecie o okreÂślonÂą liczbĂŞ bitĂłw np. a>>b gdzie a liczba ktĂłra bĂŞdzie przesuwana, b - o tyle bitĂłw przesuwamy liczbĂŞ. np. 1111>>0001 wyÂświetli wynik 0111, Bitowa ró¿nica symetryczna - wykrywa ró¿nicĂŞ pomiĂŞdzy bitami dwĂłch liczb, jeÂżeli bity umieszczone na tych samych pozycjach ró¿niÂą siĂŞ to wpisywana jest wartoœÌ 1 jeÂżeli bity nie ró¿niÂą siĂŞ to wpisywane jest 0. np. 101 ^111 = 010 Negacja - polega na zamianie bitĂłw o wartoÂści 1 na 0 i bitĂłw 0 na 1. Np. ~010 = 101 Wynik dziaÂłania jest zaskoczeniem, bo wynosi -3, dlaczego tak jest? Jest to spowodowane tym, Âże aktualnie wiĂŞkszoœÌ komputerĂłw korzysta z systemu reprezentacji liczb caÂłkowitych U2. KaÂżda liczba posiada jeden dodatkowy bit znajdujÂący siĂŞ na poczÂątku i okreÂślajÂący czy liczba jest dodatnia (0) czy ujemna (1). Tak wiĂŞc w rzeczywistoÂści dla komputera 101 to nie jest 5, a -3. MyÂślÂąc na skrĂłty, moÂżna napisaĂŚ pewnik pozwalajÂący na szybkie wyliczenie negacji, czyli ~a == (-a-1). Inaczej mĂłwiÂąc jeÂżeli a=2 to ~a=(-2-1)=-3. Tytuł: Odp: DziaÂłanai na bitach Wiadomość wysłana przez: admin Marzec 20, 2013, 11:05:13 Zadanie 1. ProgramobliczajÂący bitowÂą ró¿nicĂŞ, przesuniecie w lewo, przesuniĂŞcie w prawo, negacja, bitowa alternatywa i koniunkcja.
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) {int a,b; cout << "Podaj liczbe od 0-15 dla a \n"; cin >> a; cout << "wprowadz od 0-15 dla b \n"; cin >> b; cout << "bitowa roznica symetryczna: " << (a^b) << endl; cout << "bitowe przesuniecie w lewo: " << (a<<b)<< endl; cout << "bitowe przesuniecie w prawo: " << (a>>b)<< endl; cout << "negacja bitowa a " << ~(a) << endl; cout << "bitowa alternatywa: " << (a|b) << endl; cout << "bitowa koniunkcja: " << (a&b) << endl; system("PAUSE"); return EXIT_SUCCESS; } Tytuł: Odp: DziaÂłanai na bitach Wiadomość wysłana przez: admin Kwiecień 03, 2013, 10:34:39 Zadanie 2 . NapisaĂŚ program proszÂący o podanie kolejnych czterech liczb. nastĂŞpnie przesuwajÂący bitowo w lewo o 2 kaÂżdÂą z nich i zapisujÂący otrzymany wynik w tablicy o nazwie zero.
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) {int a[4],zero[4]; for(int x=0;x<4;x++){ cout<<endl<<"podaj "<<x+1<<" liczbe: ";cin>>a[ x ]; }; for(int x=0;x<4;x++){ zero[ x ]=(a[ x ]<<2); }; for(int x=0;x<4;x++){ cout<<endl<<"liczba "<<a[ x ]<<" przesunieta : "<<zero[ x ]; };cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } Tytuł: Odp: DziaÂłanai na bitach Wiadomość wysłana przez: admin Kwiecień 03, 2013, 12:23:29 #include <cstdlib>
#include <iostream> using namespace std; int main(int argc, char *argv[]) {int c; cout<<endl<<"Podaj liczbe liczb: ";cin>>c; int a[c],zero[c]; for(int x=0;x<c;x++){ cout<<endl<<"podaj "<<x+1<<" liczbe: ";cin>>a
for(int x=0;x<c;x++){ zero
for(int x=0;x<c;x++){ cout<<endl<<"liczba "<<a
};cout<<endl; system("PAUSE"); return EXIT_SUCCESS; } |