Darmowe Forum
Grudzieñ 22, 2024, 04:08:42
Witamy,
Go¶æ
.
Zaloguj siê
lub
zarejestruj
.
Czy dotar³ do Ciebie
email aktywacyjny?
1 Godzina
1 Dzieñ
1 Tydzieñ
1 Miesi±c
Zawsze
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
Darmowe Forum
>
C++
>
Podstawy C++ cz. I
>
Dzia³ania na bitach
Strony: [
1
]
« poprzedni
nastêpny »
Drukuj
Autor
W±tek: Dzia³ania na bitach (Przeczytany 3563 razy)
admin
Administrator
Ekspert
Wiadomo¶ci: 821
Dzia³ania na bitach
«
:
Luty 15, 2012, 08:51:44 »
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
-do liczby a ( w zapisie dwójkowym) dopisz z prawej strony b zer.
np. 5<<2 -> 0101+00=10100 = 20
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 osób znaj±cych komputery, 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: Luty 22, 2012, 08:54:30 wys³ane przez admin
»
Zapisane
admin
Administrator
Ekspert
Wiadomo¶ci: 821
Odp: Dzia³ania na bitach
«
Odpowiedz #1 :
Luty 15, 2012, 08:53:15 »
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
Odp: Dzia³ania na bitach
«
Odpowiedz #2 :
Luty 15, 2012, 13:06:46 »
Liczby ujemne w zapisie dwójkowym (U2).
Przyk³ad 1. Zapisaæ liczbê -25.
1. Obliczamy warto¶æ binarn± podanej liczby bez znaku - tzn 25 = 11001.
2. Dopisujê z lewej strony znak 1, znak oznacza ¿e bêdzie to warto¶æ ujemna. Znak 0 oznacza warto¶æ dodatni±. Czyli liczba przyjmuje postaæ 1 11001.
3. Zamieniam znaki czyli 1 bêdzie 0 a 0 stanie siê jedynk±. 0 00110
4. Dodajê warto¶æ 1 (dodajê jeden) do otrzymanej liczby. Wyja¶nienie ³opatologiczne: 0 00111. Liczba 0 00110 w zapisie dziesiêtnym to 6, do 6 dodajê 1 czyli wychodzi 7. 7 w zapisie dwójkowym to: 0 00111.)
«
Ostatnia zmiana: Luty 15, 2012, 13:14:18 wys³ane przez admin
»
Zapisane
Strony: [
1
]
Drukuj
« poprzedni
nastêpny »
Skocz do:
Wybierz cel:
-----------------------------
Zadanie C++ lutego -Agnieszka
-----------------------------
=> Nowy dzia³
=> Zadanie
-----------------------------
E14
-----------------------------
=> DIV
=> Java Script
=> php
-----------------------------
Dla Magdy i Wojtka
-----------------------------
=> Liczby dwójkowe
-----------------------------
Przyk³ady stron internetowych
-----------------------------
=> Strona zbudowana z tabelek
-----------------------------
Podstawy PHP
-----------------------------
=> Przesy³anie danych z formularza php
=> Pêtle w php
-----------------------------
Java Script
-----------------------------
=> Java Script
-----------------------------
C++ Nowe rozdanie
-----------------------------
=> C++
-----------------------------
Java JDK
-----------------------------
=> Java ale nie Script
-----------------------------
Hyde Park
-----------------------------
=> Informacje
-----------------------------
C+++
-----------------------------
=> A Kuba powiedzia³
-----------------------------
Multimedia
-----------------------------
=> Photoshop
=> Nowy dzia³
=> Java Script
=> Corel
-----------------------------
Html-strony internetowe
-----------------------------
=> Podstawy HTML- ramki/ frames
=> Podstawy HTML- tabelki
-----------------------------
C++
-----------------------------
=> Podstawy C++ cz. I
=> Kompilatory C++
=> Programowanie obiektowe w C++
=> Problem w C++
=> Podstawy
=> C++ po raz pierwszy
-----------------------------
Turbo Pascal
-----------------------------
=> Turbo Pascal semestr II
=> Projekt A¦KA
=> Turbo Pascal semestr I
=> Podstawy Turbo Pascal
£adowanie...
Polityka cookies
Darmowe Fora
|
Darmowe Forum
blackmoon
articz
polski-serwer-rpg
shaggydogss
spw