Krótki przegląd operatorów bitowców
Operator jest symbolem, który instruuje kompilatora, aby wykonał pewne operacje matematyczne lub logiczne. Istnieje kilka rodzajów operatorów w C ++, takich jak:
Wszyscy operatorzy bitowcy pracują na indywidualnym poziomie bitów. Operator bitowców można zastosować tylko do liczb całkowitych i danych danych. Na przykład, jeśli masz zmienną typu liczb całkowitych o rozmiarze 32 bitów i zastosujesz Bitwise, a nie operator nie zostanie zastosowany dla wszystkich 32 bitów. W końcu wszystkie 32 bity w zmiennej zostaną odwrócone.
Istnieje sześć różnych operatorów bitowców w C ++:
Stół bitowe lub prawdy
Bitwise lub operator wytwarza 1, gdy co najmniej jeden operand jest ustawiony na 1. Oto tabela prawdy dla Bitwise lub operatora:
Bit-1 | Bit-2 | Bit-1 | Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Stół bitowe i prawdy
Bitwise i operator wytwarzają 1, gdy oba operandy są ustawione na 1. Oto tabela prawdy dla Bitwise i operatora:
Bit-1 | Bit-2 | BIT-1 i BIT-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Stół nie
Bitwise nie operator odwraca operand. Oto tabela prawdy dla Bitwise, a nie operatora:
Bit-1 | ~ Bit-1 |
---|---|
0 | 1 |
1 | 0 |
Tabela prawdy Bitwise Xor
Bitwise Xor Operator produkuje 1 if i tylko wtedy, gdy jeden z operandów jest ustawiony na 1. Oto tabela prawdy dla Bitwise i operatora:
Bit-1 | Bit-2 | Bit-1 ^ bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Bitwise operator zmiany biegów
Bitwise operator zmiany biegów przesuwa wszystkie bity pozostawione przez określoną liczbę określonych bitów. Jeśli pozostawiisz przesunięcie wszystkich bitów danych o 1, oryginalne dane zostaną pomnożone przez 2. Podobnie, jeśli pozostawiisz przesunięcie wszystkich bitów danych o 2, oryginalne dane zostaną pomnożone przez 4.
Bitwise PRAWA ZMIANA
Operator z prawej zmiany bitowej przesuwa wszystkie bity w prawo o określoną liczbę określonych bitów. Jeśli w prawo przesuniesz wszystkie bity danych o 1, oryginalne dane zostaną podzielone (podział liczby całkowitych) o 2. Podobnie, jeśli w prawo przesuniesz wszystkie bity danych o 2, oryginalne dane zostaną podzielone (podział liczby całkowitych) przez 4.
Przykłady
Teraz, ponieważ zrozumieliśmy podstawową koncepcję operacji bitowych, spójrzmy na kilka przykładów, które pomogą ci zrozumieć operacje bitowe w C ++:
Przykład-7 i 8 służą do demonstrowania rzeczywistego użycia operatorów bitowych w języku programowania C ++.
Przykład-1: Bitwise lub operator
W tym przykładowym programie zademonstrujemy bitowate lub operator.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int First_num = 7, second_num = 9, wynik = 0;
// bitwe lub operacja
wynik = First_num | second_num;
// Wydrukuj numery wejściowe
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
wyświetlacz („druga liczba to =”, second_num);
// Wydrukuj wartość wyjściową
wyświetlacz („First_num | second_num =”, wynik);
Cout << endl;
powrót 0;
Przykład-2: Bitwise i operator
W tym przykładowym programie zilustrujemy Bitwise i operator.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int First_num = 7, second_num = 9, wynik = 0;
// Bitwise i Operacja
wynik = First_num i second_num;
// Wydrukuj numery wejściowe
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
splay („druga liczba to =”, second_num);
// Wydrukuj wartość wyjściową
wyświetlacz („First_num i second_num =”, wynik);
Cout << endl;
powrót 0;
Przykład-3: Bitise nie operator
W tym przykładowym programie zrozumiemy, jak działa operator Bitwise++.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int First_num = 7, second_num = 9, wynik_1 = 0, wynik_2 = 0;
// Bitwise nie działa
wynik_1 = ~ First_num;
wynik_2 = ~ second_num;
// Wydrukuj liczby wejściowe i wartość wyjściowa
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
Display ("~ First_num =", wynik_1);
Cout << endl;
// Wydrukuj liczby wejściowe i wartość wyjściowa
wyświetlacz („druga liczba to =”, second_num);
wyświetlacz („~ second_num =”, wynik_2);
Cout << endl;
powrót 0;
Przykład-4: Bitwise Xor Operator
Ten program zamierza wyjaśnić, jak działa operator Bitwise Xor w C++.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() <<
"(" << myBitSet.to_ulong() << ") " << endl;
int main ()
int First_num = 7, second_num = 9, wynik = 0;
// Bitwise Xor Operation
wynik = First_num ^ second_num;
// Wydrukuj numery wejściowe
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
wyświetlacz („druga liczba to =”, second_num);
// Wydrukuj wartość wyjściową
wyświetlacz („First_num ^ second_num =”, wynik);
Cout << endl;
powrót 0;
Przykład-5: operator Bitwise LEEL SHIFT
Teraz zobaczymy przykład operatora Bitwise lewy zmianę. W tym programie zadeklarowaliśmy dwie liczby, First_num i Second_num typu liczb całkowitych. Tutaj „First_num” jest przesunięty o jeden bit, a „Second_num” jest przesunięty przez dwa bity.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() <<
"(" << myBitSet.to_ulong() << ") " << endl;
int main ()
int First_num = 7, second_num = 9, wynik_1 = 0, wynik_2 = 0;
// Bitwise Operacja przesunięcia w lewo
wynik_1 = First_num << 1;
wynik_2 = second_num << 2;
// Wydrukuj liczby wejściowe i wartość wyjściowa
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
Wyświetlacz („First_num << 1 = ", result_1);
Cout << endl;
// Wydrukuj liczby wejściowe i wartość wyjściowa
wyświetlacz („druga liczba to =”, second_num);
Wyświetlacz („Second_num << 2 = ", result_2);
Cout << endl;
powrót 0;
Przykład-6: operator prawej zmiany biegów bitowców
Teraz zobaczymy kolejny przykład, aby zrozumieć operator prawej zmiany biegów. Zadeklarowaliśmy dwie liczby, First_num i Second_num typu liczb całkowitych. Tutaj „First_num” jest przesunięty w prawo o jeden bit, a „Second_num” jest przesunięty w prawo.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" <<
MyBitset.to_ulong () << ") " << endl;
int main ()
int First_num = 7, second_num = 9, wynik_1 = 0, wynik_2 = 0;
// Bitise PRAWA ZMIANA
wynik_1 = First_num >> 1;
wynik_2 = second_num >> 2;
// Wydrukuj liczby wejściowe i wartość wyjściowa
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
wyświetlacz („First_num >> 1 =”, wynik_1);
Cout << endl;
// Wydrukuj liczby wejściowe i wartość wyjściowa
wyświetlacz („druga liczba to =”, second_num);
wyświetlacz („second_num >> 2 =”, wynik_2);
Cout << endl;
powrót 0;
Przykład-7: Ustaw bit
Ten przykład zamierza pokazać, jak ustawić określony bit za pomocą operatorów bitowców.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" <<
MyBitset.to_ulong () << ") " << endl;
int main ()
int First_num = 7, second_num = 9;
// Wydrukuj numer wejściowy - First_num
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
// Ustaw 5. bit
First_num | = (1Ul << 5);
// Wydrukuj wyjście
wyświetlacz („Ustaw 5. bit First_num =”, First_num);
Cout << endl;
// Wydrukuj numer wejściowy - Second_num
Cout << endl;
wyświetlacz („druga liczba to =”, second_num);
// Ustaw 6. bit
second_num | = (1Ul << 6);
// Wydrukuj wyjście
wyświetlacz („Ustaw 6. bit second_num =”, second_num);
Cout << endl;
powrót 0;
Przykład-8: jasny bit
Ten przykład zamierza pokazać, jak wyczyścić określony bit za pomocą operatorów bitowców.
#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;
// funkcja display ()
void wyświetlacz (String print_msg, liczba int)
bitset<16> MYBITSet (numer);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" <<
MyBitset.to_ulong () << ") " << endl;
int main ()
int First_num = 7, second_num = 9;
// Wydrukuj numer wejściowy - First_num
Cout << endl;
wyświetlacz („Pierwszy numer to =”, First_num);
// Wyczyść 2. bit
First_num & = ~ (1Ul << 2);
// Wydrukuj wyjście
wyświetlacz („Ustaw 2. bit First_num =”, First_num);
Cout << endl;
// Wydrukuj numer wejściowy - Second_num
Cout << endl;
wyświetlacz („druga liczba to =”, second_num);
// Wyczyść trzeci bit
second_num & = ~ (1Ul << 3);
// Wydrukuj wyjście
wyświetlacz („Ustaw 3 bit drugiego_num =”, second_num);
Cout << endl;
powrót 0;
Wniosek
Operator bitowców służy przede wszystkim do manipulowania poszczególnymi bitami dla typu danych liczb całkowitych i znaków. Operator Bitwise jest mocno używany w tworzeniu oprogramowania wbudowanego. Tak więc, jeśli opracowujesz sterownik urządzenia lub system bardzo blisko poziomu sprzętu, możesz użyć tych operatorów bitowych.