Darmowe Forum
Grudzieñ 22, 2024, 08:12:30 *
Witamy, Go¶æ. Zaloguj siê lub zarejestruj.
Czy dotar³ do Ciebie email aktywacyjny?

Zaloguj siê podaj±c nazwê u¿ytkownika, has³o i d³ugo¶æ sesji
Aktualno¶ci: Forum zosta³o uruchomione!
 
   Strona g³ówna   Pomoc Zaloguj siê Rejestracja  
Strony: [1]
  Drukuj  
Autor W±tek: Dzia³ania na bitach  (Przeczytany 3559 razy)
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« : Marzec 30, 2011, 08:17:24 »

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;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomo¶ci: 821


Email
« Odpowiedz #1 : Marzec 30, 2011, 08:27:59 »

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 nawet dla Adama, 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.

« Ostatnia zmiana: Marzec 30, 2011, 09:29:06 wys³ane przez admin » Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

articz moikrewni shaggydogss proskills polski-serwer-rpg