C++

Operatory bitowe C++

Operatory bitowe C++
W tym artykule omówimy operatory bitowe w języku programowania C++. Zobaczymy kilka działających przykładów, aby szczegółowo zrozumieć operacje bitowe. W C++ operatory bitowe działają na poziomie pojedynczego bitu.

Krótki przegląd operatorów bitowych

Operator to symbol, który nakazuje kompilatorowi wykonanie pewnych operacji matematycznych lub logicznych. W C++ istnieje kilka typów operatorów, takich jak:

  1. Operatory arytmetyczne
  2. Operatory logiczne
  3. Operatorzy relacyjni
  4. Operatorzy przypisania
  5. Operatory bitowe
  6. Różni operatorzy

Wszystkie operatory Bitwise działają na poziomie pojedynczego bitu. Operator bitowy może być stosowany tylko do typów danych całkowitych i znakowych. Na przykład, jeśli masz zmienną typu integer o rozmiarze 32 bitów i zastosujesz operację bitową NOT, operator bitowy NOT zostanie zastosowany dla wszystkich 32 bitów. Tak więc ostatecznie wszystkie 32 bity w zmiennej zostaną odwrócone.

W C++ dostępnych jest sześć różnych operatorów bitowych:

  1. Bitowe OR [reprezentowane jako „|”]
  2. Bitowe AND [reprezentowane jako „&”]
  3. Bitowe NIE [reprezentowane jako „~”]
  4. Bitowe XOR [reprezentowane jako „^”]
  5. Bitowe przesunięcie w lewo [reprezentowane jako „<<”]
  6. Bitowe przesunięcie w prawo [reprezentowane jako „>>”]

Bitowa LUB Tabela Prawdy

Operator bitowego OR daje 1, gdy co najmniej jeden operand jest ustawiony na 1. Oto tabela prawdy dla operatora bitowego OR:

Bit-1 Bit-2 Bit-1 | Bit-2
0 0 0
0 1 1
1 0 1
1 1 1

Bitowa ORAZ Tabela Prawdy

Bitowy operator AND daje 1, gdy oba operandy są ustawione na 1. Oto tabela prawdy dla operatora bitowego AND:

Bit-1 Bit-2 Bit-1 i Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bitowa NIE Tabela Prawdy

Bitowy operator NOT odwraca operand. Oto tabela prawdy dla operatora Bitwise NOT:

Bit-1 ~Bit-1
0 1
1 0

Bitowa tabela prawdy XOR

Bitowy operator XOR daje 1 wtedy i tylko wtedy, gdy jeden z operandów jest ustawiony na 1. Oto tabela prawdy dla operatora bitowego AND:

Bit-1 Bit-2 Bit-1 ^ Bit-2
0 0 0
0 1 1
1 0 1
1 1 0

Bitowy operator przesunięcia w lewo

Operator Bitwise Left Shift przesuwa wszystkie pozostałe bity o określoną liczbę określonych bitów. Jeśli w lewo przesuniesz wszystkie bity danych o 1, oryginalne dane zostaną pomnożone przez 2. Podobnie, jeśli w lewo przesuniesz wszystkie bity danych o 2, oryginalne dane zostaną pomnożone przez 4.

Bitowy operator przesunięcia w prawo

Operator Bitwise Right Shift przesuwa wszystkie bity w prawo o określoną liczbę określonych bitów. Jeśli przesuniesz w prawo wszystkie bity danych o 1, oryginalne dane zostaną podzielone (dzielenie liczb całkowitych) przez 2. Podobnie, jeśli przesuniesz w prawo wszystkie bity danych o 2, oryginalne dane zostaną podzielone (dzielenie liczb całkowitych) przez 4.

Przykłady

Teraz, ponieważ zrozumieliśmy podstawową koncepcję operacji bitowych, przyjrzyjmy się kilku przykładom, które pomogą Ci zrozumieć operacje bitowe w C++:

Przykłady 7 i 8 służą do zademonstrowania rzeczywistego użycia operatorów bitowych w języku programowania C++.

Przykład-1: Bitowy operator OR

W tym przykładowym programie zademonstrujemy operator bitowego OR.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> mójBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9, wynik = 0;
// Bitowa operacja OR OR
wynik = pierwsza_liczba | druga_liczba;
// drukuj liczby wejściowe
Cout << endl;
display("Pierwszy numer to     =  ”, first_num);
display("Drugi numer to    =  ", second_num);
// drukuj wartość wyjściową
display("pierwszy_num | drugi_num =  ", wynik);
Cout << endl;
zwróć 0;

Przykład-2: Bitowy operator AND

W tym przykładowym programie zilustrujemy bitowy operator AND.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> myBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9, wynik = 0;
// Bitowa operacja AND
wynik = pierwszy_num & drugi_num;
// drukuj liczby wejściowe
Cout << endl;
display("Pierwszy numer to     =  ”, first_num);
splay("Druga liczba to       =  ", second_num);
// drukuj wartość wyjściową
display("pierwsza_numer i druga_numer =  ", wynik);
Cout << endl;
zwróć 0;

Przykład-3: Bitowy operator NOT

W tym przykładowym programie zrozumiemy, jak działa operator Bitwise NOT w C++.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> myBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9, wynik_1 = 0, wynik_2 = 0;
// Bitowa operacja NOT
wynik_1 = ~pierwsza_liczba;
wynik_2 = ~druga_liczba;
// drukuj liczby wejściowe i wartość wyjściową
Cout << endl;
display("Pierwszy numer to    =  ”, first_num);
display("~first_num         =  ”, wynik_1);
Cout << endl;
// drukuj liczby wejściowe i wartość wyjściową
display("Druga liczba to   =  ”, druga_liczba);
display("~second_num        =  ”, wynik_2);
Cout << endl;
zwróć 0;

Przykład-4: Bitowy operator XOR

Ten program ma na celu wyjaśnienie, jak działa operator Bitwise XOR w C++.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> mójBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9, wynik = 0;
// Bitowa operacja XOR
wynik = pierwsza_liczba ^ druga_liczba;
// drukuj liczby wejściowe
Cout << endl;
display("Pierwszy numer to     =  ”, first_num);
display("Drugi numer to    =  ", second_num);
// drukuj wartość wyjściową
display("pierwsza_numer ^ druga_numer =  ", wynik);
Cout << endl;
zwróć 0;

Przykład-5: Bitowy operator przesunięcia w lewo

Teraz zobaczymy przykład operatora Bitwise Left Shift. W tym programie zadeklarowaliśmy dwie liczby, first_num i second_num typu integer. Tutaj „first_num” jest przesunięte w lewo o jeden bit, a „second_num” jest przesunięte w lewo o dwa bity.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> myBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9, wynik_1 = 0, wynik_2 = 0;
// Operacja bitowego przesunięcia w lewo
wynik_1 = pierwsza_liczba << 1;
wynik_2 = druga_liczba << 2;
// drukuj liczby wejściowe i wartość wyjściową
Cout << endl;
display("Pierwszy numer to    =  ”, first_num);
display("pierwszy_numer << 1     =  ", result_1);
Cout << endl;
// drukuj liczby wejściowe i wartość wyjściową
display("Druga liczba to   =  ”, druga_liczba);
display("druga_liczba << 2    =  ", result_2);
Cout << endl;
zwróć 0;

Przykład-6: Bitowy operator przesunięcia w prawo

Teraz zobaczymy kolejny przykład, aby zrozumieć operator Bitwise Right Shift. Zadeklarowaliśmy dwie liczby, first_num i second_num typu integer. Tutaj „first_num” jest przesunięte w prawo o jeden bit, a „second_num” jest przesunięte w prawo o dwa bity.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> mójBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9, wynik_1 = 0, wynik_2 = 0;
// Operacja bitowego przesunięcia w prawo
wynik_1 = pierwsza_liczba >> 1;
wynik_2 = druga_liczba >> 2;
// drukuj liczby wejściowe i wartość wyjściową
Cout << endl;
display("Pierwszy numer to    =  ”, first_num);
display("pierwsza_liczba >> 1     =  ", wynik_1);
Cout << endl;
// drukuj liczby wejściowe i wartość wyjściową
display("Druga liczba to   =  ”, druga_liczba);
display("druga_liczba >> 2    =  ", wynik_2);
Cout << endl;
zwróć 0;

Przykład-7: Ustaw bit

Ten przykład ma na celu pokazanie, jak ustawić określony bit za pomocą operatorów bitowych.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> mójBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9;
// wypisz liczbę wejściową - first_num
Cout << endl;
display("Pierwszy numer to            =  ", first_num);
// Ustaw piąty bit
pierwsza_liczba |= (1UL << 5);
// Wydrukuj wyjście
display("Ustaw piąty bit pierwszego_numeru  =  ", pierwszy_numer);
Cout << endl;
// wypisz liczbę wejściową - second_num
Cout << endl;
display("Druga liczba to            =  ", second_num);// Ustaw szósty bit
druga_liczba |= (1UL << 6);
// Wydrukuj wyjście
display("Ustaw szósty bit drugiego_num  =  ", drugi_num);
Cout << endl;
zwróć 0;

Przykład-8: Wyczyść bit

Ten przykład ma na celu pokazanie, jak wyczyścić określony bit za pomocą operatorów bitowych.

#zawierać
#zawierać
#zawierać
przy użyciu standardowej przestrzeni nazw;
// funkcja wyświetlania()
void display(string print_msg, int number)

bitset<16> mójBitSet(liczba);
Cout << print_msg;
Cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int pierwsza_num = 7, druga_num = 9;
// wypisz liczbę wejściową - first_num
Cout << endl;
display("Pierwszy numer to            =  ", first_num);
// Wyczyść drugi bit
pierwszy_numer &= ~(1UL << 2);
// Wydrukuj wyjście
display("Ustaw drugi bit pierwszego_numeru  =  ", pierwszy_numer);
Cout << endl;
// wypisz liczbę wejściową - second_num
Cout << endl;
display("Drugi numer to            =  ", second_num);
// Wyczyść trzeci bit
drugi_numer &= ~(1UL << 3);
// Wydrukuj wyjście
display("Ustaw trzeci bit drugiego_num  =  ”, drugi_num);
Cout << endl;
zwróć 0;

Wniosek

Operator bitowy służy przede wszystkim do manipulowania poszczególnymi bitami dla danych typu całkowitego i znakowego. Operator bitowy jest często używany w tworzeniu oprogramowania wbudowanego. Tak więc, jeśli opracowujesz sterownik urządzenia lub system bardzo zbliżony do poziomu sprzętowego, możesz użyć tych operatorów bitowych.

Gry Vulkan for Linux Users
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
Gry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...
Gry OpenTTD Tutorial
OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...