Побитовые операторы в C++

Побитовые операторы в C++ Программирование и разработка

Побитовые операторы в C++

В этой статье мы собираемся обсудить поразрядные операторы на языке программирования C ++. Мы увидим несколько рабочих примеров, чтобы подробно разобраться в побитовых операциях. В C ++ побитовые операторы работают на индивидуальном битовом уровне.

Краткий обзор побитовых операторов

Оператор — это символ, который инструктирует компилятор выполнять определенные математические или логические операции. В C ++ есть несколько типов операторов, например:

  1. Арифметические операторы
  2. Логические операторы
  3. Операторы отношения
  4. Операторы присваивания
  5. Побитовые операторы
  6. Разные операторы

Все побитовые операторы работают на индивидуальном битовом уровне. Поразрядный оператор может применяться только к целочисленным и символьным типам данных. Например, если у вас есть переменная целочисленного типа с размером 32 бита и вы применяете побитовую операцию НЕ, побитовый оператор НЕ будет применяться ко всем 32 битам. Таким образом, в конечном итоге все 32 бита переменной будут инвертированы.

В C ++ доступно шесть различных побитовых операторов:

  1. Побитовое ИЛИ [представлено как «|»]
  2. Побитовое И [представлено как «&»]
  3. Побитовое НЕ [обозначено как «~»]
  4. Побитовое XOR [обозначено как «^»]
  5. Побитовый сдвиг влево [обозначен как «<<„]
  6. Побитовый сдвиг вправо [обозначен как “>>»]

Таблица истинности побитового ИЛИ

Оператор побитового ИЛИ дает 1, если хотя бы один операнд имеет значение 1. Вот таблица истинности для оператора побитового ИЛИ:

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

Побитовая таблица И истинности

Оператор побитового И дает 1, когда оба операнда имеют значение 1. Вот таблица истинности для оператора Побитовое И:

Читайте также:  Структура данных 101: как использовать связанные списки в Java
Bit-1 Bit-2 Bit-1 & Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Побитовая таблица истинности НЕ

Побитовый оператор НЕ инвертирует операнд. Вот таблица истинности для побитового оператора НЕ:

Bit-1 ~Bit-1
0 1
1 0

Таблица истинности побитового XOR

Побитовый оператор XOR производит 1, если и только если для одного из операндов установлено значение 1. Вот таблица истинности для побитового оператора AND:

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

Оператор побитового сдвига влево

Оператор побитового сдвига влево сдвигает все биты влево на указанное количество указанных битов. Если вы сдвинете влево все биты данных на 1, исходные данные будут умножены на 2. Точно так же, если вы сдвинете все биты данных влево на 2, исходные данные будут умножены на 4.

Побитовый оператор сдвига вправо

Оператор побитового сдвига вправо сдвигает все биты вправо на указанное количество указанных битов. Если вы сдвинете все биты данных вправо на 1, исходные данные будут разделены (целочисленное деление) на 2. Точно так же, если вы сдвинете все биты данных вправо на 2, исходные данные будут разделены (целочисленное деление). ) на 4.

Примеры

Теперь, когда мы поняли базовую концепцию побитовых операций, давайте рассмотрим пару примеров, которые помогут вам понять побитовые операции в C ++:

  • Пример-1: Побитовый оператор ИЛИ
  • Пример-2: Побитовый оператор И
  • Пример-3: Побитовый оператор НЕ
  • Пример-4: Побитовый оператор XOR
  • Пример 5: побитовый оператор сдвига влево
  • Пример 6: побитовый оператор сдвига вправо
  • Пример-7: Установить бит
  • Пример-8: Очистить бит

Примеры 7 и 8 предназначены для демонстрации реального использования побитовых операторов в языке программирования C ++.

Пример-1: Побитовый оператор ИЛИ

В этом примере программы мы продемонстрируем операцию побитового ИЛИ.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);

cout << print_msg;
cout << myBitSet.to_string() << » (« << myBitSet.to_ulong() << «) « << endl;
}

int main()
{
int first_num = 7, second_num = 9, result = 0;

// Bitwise OR operation
result = first_num | second_num;

// print the input numbers
cout << endl;
display(«First Number is        =  «, first_num);
display(«Second Number is       =  «, second_num);

// print the output value
display(«first_num | second_num =  «, result);
cout << endl;

return 0;
}

Побитовый оператор ИЛИ

Пример-2: Побитовый оператор И

В этом примере программы мы проиллюстрируем побитовый оператор AND.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);

cout << print_msg;
cout << myBitSet.to_string() << » (« << myBitSet.to_ulong() << «) « << endl;
}

int main()
{
int first_num = 7, second_num = 9, result = 0;
// Bitwise AND operation
result = first_num & second_num;

// print the input numbers
cout << endl;
display(«First Number is        =  «, first_num);
splay(«Second Number is       =  «, second_num);

// print the output value
display(«first_num & second_num =  «, result);
cout << endl;

return 0;
}

Побитовый оператор И

Пример-3: Побитовый оператор НЕ

В этом примере программы мы поймем, как работает побитовый оператор НЕ в C ++.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);
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;

// Bitwise NOT operation
result_1 = ~first_num;
result_2 = ~second_num;

// print the input numbers and output value
cout << endl;
display(«First Number is    =  «, first_num);
display(«~first_num         =  «, result_1);
cout << endl;

// print the input numbers and output value
display(«Second Number is   =  «, second_num);
display(«~second_num        =  «, result_2);

cout << endl;

return 0;
}

Побитовый оператор НЕ

Пример-4: Побитовый оператор XOR

Эта программа предназначена для объяснения того, как работает побитовый оператор XOR в C ++.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);
cout << print_msg;
cout << myBitSet.to_string() << » (« << myBitSet.to_ulong() << «) « << endl;
}

int main()
{
int first_num = 7, second_num = 9, result = 0;

// Bitwise XOR operation
result = first_num ^ second_num;

// print the input numbers
cout << endl;
display(«First Number is        =  «, first_num);
display(«Second Number is       =  «, second_num);

// print the output value
display(«first_num ^ second_num =  «, result);
cout << endl;

return 0;
}

Побитовый оператор XOR

Пример 5: побитовый оператор сдвига влево

Теперь посмотрим на пример оператора побитового сдвига влево. В этой программе мы объявили два числа, first_num и second_num целочисленного типа. Здесь «first_num» сдвигается влево на один бит, а «second_num» сдвигается влево на два бита.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);
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;

// Bitwise Left Shift operation
result_1 = first_num << 1;
result_2 = second_num << 2;

// print the input numbers and output value
cout << endl;
display(«First Number is    =  «, first_num);
display(«first_num << 1     =  «, result_1);
cout << endl;

// print the input numbers and output value
display(«Second Number is   =  «, second_num);
display(«second_num << 2    =  «, result_2);

cout << endl;

return 0;
}

побитовый оператор сдвига влево

Пример 6: побитовый оператор сдвига вправо

Теперь мы рассмотрим другой пример, чтобы понять оператор побитового сдвига вправо. Мы объявили два числа, first_num и second_num целочисленного типа. Здесь «first_num» сдвигается вправо на один бит, а «second_num» сдвигается вправо на два бита.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);
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;

// Bitwise Right Shift operation
result_1 = first_num >> 1;
result_2 = second_num >> 2;

// print the input numbers and output value
cout << endl;
display(«First Number is    =  «, first_num);
display(«first_num >> 1     =  «, result_1);
cout << endl;

// print the input numbers and output value
display(«Second Number is   =  «, second_num);
display(«second_num >> 2    =  «, result_2);

cout << endl;

return 0;
}

побитовый оператор сдвига вправо

Пример-7: Установить бит

В этом примере показано, как установить конкретный бит с помощью побитовых операторов.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);
cout << print_msg;
cout << myBitSet.to_string() << » (« << myBitSet.to_ulong() << «) « << endl;
}

int main()
{
int first_num = 7, second_num = 9;

// print the input number — first_num
cout << endl;
display(«First Number is           =  «, first_num);

// Set 5th bit
first_num |= (1UL << 5);

// Print output
display(«Set 5th bit of first_num  =  «, first_num);
cout << endl;

// print the input number — second_num
cout << endl;
display(«Second Number is           =  «, second_num);// Set 6th bit
second_num |= (1UL << 6);

// Print output
display(«Set 6th bit of second_num  =  «, second_num);
cout << endl;

return 0;
}

Установить бит

Пример-8: Очистить бит

В этом примере показано, как очистить определенный бит с помощью побитовых операторов.

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

// display() function
void display(string print_msg, int number)
{
bitset<16> myBitSet(number);
cout << print_msg;
cout << myBitSet.to_string() << » (« << myBitSet.to_ulong() << «) « << endl;
}

int main()
{
int first_num = 7, second_num = 9;

// print the input number — first_num
cout << endl;
display(«First Number is           =  «, first_num);

// Clear 2nd bit
first_num &= ~(1UL << 2);

// Print output
display(«Set 2nd bit of first_num  =  «, first_num);
cout << endl;

// print the input number — second_num
cout << endl;
display(«Second Number is           =  «, second_num);

// Clear 3rd bit
second_num &= ~(1UL << 3);

// Print output
display(«Set 3rd bit of second_num  =  «, second_num);
cout << endl;

return 0;
}

Заключение

Поразрядный оператор в основном используется для управления отдельными битами для целочисленных и символьных типов данных. Поразрядный оператор широко используется при разработке встроенного программного обеспечения. Итак, если вы разрабатываете драйвер устройства или систему, очень близкую к аппаратному уровню, вы можете использовать эти побитовые операторы.

Оцените статью
bestprogrammer.ru
Добавить комментарий