Darmowe Forum

C+++ => A Kuba powiedziaÂł => Wątek zaczęty przez: admin Marzec 20, 2013, 10:10:48



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
  • =(a
  • <<2);
        };       
  for(int x=0;x<c;x++){
        cout<<endl<<"liczba "<<a
  • <<" przesunieta : "<<zero
  • ;
 
        };cout<<endl;
             
    system("PAUSE");
    return EXIT_SUCCESS;
}


Polityka cookies
Darmowe Fora | Darmowe Forum

proskills articz moikrewni blackmoon polski-serwer-rpg