C ++

Bitové operátory C ++

Bitové operátory C ++
V tomto článku budeme diskutovat o bitových operátorech v programovacím jazyce C ++. Uvidíme několik pracovních příkladů, abychom podrobně porozuměli bitovým operacím. V C ++ pracují bitové operátory na úrovni jednotlivých bitů.

Stručný přehled bitových operátorů

Operátor je symbol, který dává kompilátoru pokyn k provádění určitých matematických nebo logických operací. V C ++ existuje několik typů operátorů, například:

  1. Aritmetické operátory
  2. Logičtí operátoři
  3. Relační operátoři
  4. Operátoři přiřazení
  5. Bitové operátory
  6. Různí operátoři

Všichni bitoví operátoři pracují na úrovni jednotlivých bitů. Bitový operátor lze použít pouze na celočíselné a znakové datové typy. Například pokud máte proměnnou celočíselného typu o velikosti 32 bitů a použijete bitovou operaci NOT, použije se bitový operátor NOT pro všech 32 bitů. Takže nakonec bude všech 32 bitů v proměnné obráceno.

V C ++ je k dispozici šest různých bitových operátorů:

  1. Bitové operátor OR [vyjádřeno jako „|“]
  2. Bitové AND [reprezentováno jako „&“]
  3. Bitový NOT [reprezentován jako „~“]
  4. Bitový XOR [reprezentován jako „^“]
  5. Bitový posun vlevo [reprezentován jako „<<”]
  6. Bitový posun doprava [vyjádřeno jako „>>“]

Tabulka bitových NEBO pravdy

Operátor Bitwise OR vytvoří 1, když je alespoň jeden operand nastaven na 1. Tady je tabulka pravdivosti pro operátor Bitwise OR:

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

Tabulka bitových AND pravd

Bitový operátor AND vytvoří 1, když jsou oba operandy nastaveny na 1. Tady je tabulka pravdivosti pro bitový operátor AND:

Bit-1 Bit-2 Bit-1 a Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bitwise NOT Truth Table

Bitový operátor NOT invertuje operand. Tady je tabulka pravdy pro operátor Bitwise NOT:

Bit-1 ~ Bit-1
0 1
1 0

Bitová tabulka pravdy XOR

Bitový operátor XOR vyprodukuje 1 právě tehdy, když je jeden z operandů nastaven na 1. Zde je tabulka pravdivosti pro bitový operátor AND:

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

Operátor bitového levého posunu

Operátor bitového posunu doleva posune všechny bity, které zbývají o zadaný počet zadaných bitů. Pokud ponecháte posunutí všech bitů dat o 1, původní data se vynásobí 2. Podobně pokud ponecháte posunutí všech bitů dat o 2, původní data se vynásobí 4.

Operátor bitového posunu doprava

Operátor bitového posunu doprava posune všechny bity doprava o zadaný počet zadaných bitů. Pokud posunete doprava všechny bity dat o 1, původní data se vydělí (celočíselné dělení) 2. Podobně, pokud posunete všechny bity dat doprava o 2, původní data se vydělí (celočíselné dělení) 4.

Příklady

Nyní, protože jsme pochopili základní koncept bitových operací, pojďme se podívat na několik příkladů, které vám pomohou porozumět bitovým operacím v C ++:

Příklad 7 a 8 slouží k demonstraci skutečného použití bitových operátorů v programovacím jazyce C ++.

Příklad 1: Bitový operátor OR

V tomto ukázkovém programu si ukážeme operátor Bitwise OR.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Bitové operace NEBO
result = first_num | druhé_číslo;
// vytiskne vstupní čísla
cout << endl;
display ("První číslo je =", první_číslo);
display ("Druhé číslo je =", druhé_číslo);
// vytiskne výstupní hodnotu
display ("first_num | second_num =", výsledek);
cout << endl;
návrat 0;

Příklad 2: Bitový operátor AND

V tomto ukázkovém programu ilustrujeme operátor Bitwise AND.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Bitový AND provoz
result = first_num & second_num;
// vytiskne vstupní čísla
cout << endl;
display ("První číslo je =", první_číslo);
splay ("Druhé číslo je =", druhé_číslo);
// vytiskne výstupní hodnotu
display ("first_num & second_num =", výsledek);
cout << endl;
návrat 0;

Příklad 3: Bitový operátor NOT

V tomto ukázkovém programu pochopíme, jak operátor Bitwise NOT pracuje v C++.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitová operace NOT
result_1 = ~ první_číslo;
result_2 = ~ druhé_číslo;
// vytiskne vstupní čísla a výstupní hodnotu
cout << endl;
display ("První číslo je =", první_číslo);
display ("~ first_num =", result_1);
cout << endl;
// vytiskne vstupní čísla a výstupní hodnotu
display ("Druhé číslo je =", druhé_číslo);
display ("~ second_num =", result_2);
cout << endl;
návrat 0;

Příklad 4: Bitový operátor XOR

Tento program má v úmyslu vysvětlit, jak operátor Bitwise XOR pracuje v C++.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Bitová operace XOR
result = first_num ^ second_num;
// vytiskne vstupní čísla
cout << endl;
display ("První číslo je =", první_číslo);
display ("Druhé číslo je =", druhé_číslo);
// vytiskne výstupní hodnotu
display ("first_num ^ second_num =", výsledek);
cout << endl;
návrat 0;

Příklad 5: Operátor bitového levého posunu

Nyní uvidíme příklad operátoru Bitový levý posun. V tomto programu jsme deklarovali dvě čísla, first_num a second_num celočíselného typu. Zde je „first_num“ posunuto doleva o jeden bit a „second_num“ je posunuto doleva o dva bity.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitový posun vlevo
result_1 = první_číslo << 1;
result_2 = druhé_číslo << 2;
// vytiskne vstupní čísla a výstupní hodnotu
cout << endl;
display ("První číslo je =", první_číslo);
display ("first_num << 1     =  ", result_1);
cout << endl;
// vytiskne vstupní čísla a výstupní hodnotu
display ("Druhé číslo je =", druhé_číslo);
display ("druhé_číslo << 2    =  ", result_2);
cout << endl;
návrat 0;

Příklad 6: Operátor bitového posunu doprava

Nyní uvidíme další příklad k pochopení operátoru Bitwise Right Shift. Deklarovali jsme dvě čísla, first_num a second_num celočíselného typu. Zde je „first_num“ posunuto doprava o jeden bit a „second_num“ je posunuto doprava o dva bity.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitový posun doprava
result_1 = první_číslo >> 1;
result_2 = druhé_číslo >> 2;
// vytiskne vstupní čísla a výstupní hodnotu
cout << endl;
display ("První číslo je =", první_číslo);
display ("first_num >> 1 =", result_1);
cout << endl;
// vytiskne vstupní čísla a výstupní hodnotu
display ("Druhé číslo je =", druhé_číslo);
display ("second_num >> 2 =", result_2);
cout << endl;
návrat 0;

Příklad 7: Nastavit bit

Tento příklad má v úmyslu ukázat, jak nastavit konkrétní bit pomocí bitových operátorů.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// vytiskne číslo vstupu - first_num
cout << endl;
display ("První číslo je =", první_číslo);
// Nastavte 5. bit
first_num | = (1UL << 5);
// Tiskový výstup
display ("Nastavit 5. bit first_num =", first_num);
cout << endl;
// vytiskne číslo vstupu - druhé_číslo
cout << endl;
display ("Second Number is =", second_num); // Nastaví 6. bit
second_num | = (1UL << 6);
// Tiskový výstup
display ("Set 6. bit of second_num =", second_num);
cout << endl;
návrat 0;

Příklad 8: Vymazat bit

Tento příklad má v úmyslu ukázat, jak vyčistit určitý bit pomocí bitových operátorů.

#zahrnout
#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)

bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// vytiskne číslo vstupu - first_num
cout << endl;
display ("První číslo je =", první_číslo);
// Vymazat 2. bit
first_num & = ~ (1UL << 2);
// Tiskový výstup
display ("Nastavit 2. bit first_num =", first_num);
cout << endl;
// vytiskne číslo vstupu - druhé_číslo
cout << endl;
display ("Druhé číslo je =", druhé_číslo);
// Vymazat 3. bit
second_num & = ~ (1UL << 3);
// Tiskový výstup
display ("Set 3. bit of second_num =", second_num);
cout << endl;
návrat 0;

Závěr

Bitový operátor se primárně používá k manipulaci s jednotlivými bity pro celočíselný a znakový datový typ. Bitový operátor se silně používá při vývoji vestavěného softwaru. Takže pokud vyvíjíte ovladač zařízení nebo systém velmi blízký úrovni hardwaru, možná budete chtít použít tyto bitové operátory.

Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...
Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...
Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...