C ++

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

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

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

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

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

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

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

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

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

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

Бит-1 Бит-2 Бит-1 | Бит-2
0 0 0
0 1 1
1 0 1
1 1 1

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

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

Бит-1 Бит-2 Бит-1 и Бит-2
0 0 0
0 1 0
1 0 0
1 1 1

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

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

Бит-1 ~ Бит-1
0 1
1 0

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

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

Бит-1 Бит-2 Бит-1 ^ Бит-2
0 0 0
0 1 1
1 0 1
1 1 0

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

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

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

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

Примеры

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

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

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустое отображение (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, результат = 0;
// Побитовая операция ИЛИ
результат = first_num | second_num;
// выводим введенные числа
cout << endl;
display ("Первое число =", first_num);
display ("Второе число =", second_num);
// выводим выводимое значение
display ("first_num | second_num =", результат);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, результат = 0;
// Побитовая операция И
результат = первое_число и второе_число;
// выводим введенные числа
cout << endl;
display ("Первое число =", first_num);
splay ("Второе число =", second_num);
// выводим выходное значение
display ("first_num & second_num =", результат);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, результат_1 = 0, результат_2 = 0;
// Побитовая операция НЕ
результат_1 = ~ первое_число;
результат_2 = ~ второе_число;
// печатаем входные числа и выходное значение
cout << endl;
display ("Первое число =", first_num);
display ("~ first_num =", результат_1);
cout << endl;
// печатаем входные числа и выходное значение
display ("Второе число =", second_num);
display ("~ second_num =", результат_2);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, результат = 0;
// Побитовая операция XOR
результат = первое_число ^ второе_число;
// выводим введенные числа
cout << endl;
display ("Первое число =", first_num);
display ("Второе число =", second_num);
// выводим выходное значение
display ("first_num ^ second_num =", результат);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, результат_1 = 0, результат_2 = 0;
// Побитовый сдвиг влево
результат_1 = первое_число << 1;
результат_2 = второе_число << 2;
// печатаем входные числа и выходное значение
cout << endl;
display ("Первое число =", first_num);
display ("first_num << 1     =  ", result_1);
cout << endl;
// печатаем входные числа и выходное значение
display ("Второе число =", second_num);
display ("second_num << 2    =  ", result_2);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, результат_1 = 0, результат_2 = 0;
// Побитовая операция сдвига вправо
результат_1 = первое_число >> 1;
результат_2 = второе_число >> 2;
// печатаем входные числа и выходное значение
cout << endl;
display ("Первое число =", first_num);
display ("first_num >> 1 =", результат_1);
cout << endl;
// печатаем входные числа и выходное значение
display ("Второе число =", second_num);
display ("second_num >> 2 =", результат_2);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// выводим число ввода - first_num
cout << endl;
display ("Первое число =", first_num);
// Устанавливаем 5-й бит
first_num | = (1UL << 5);
// Вывод на печать
display ("Установить 5-й бит first_num =", first_num);
cout << endl;
// выводим число ввода - second_num
cout << endl;
display ("Second Number is =", second_num); // Устанавливаем 6-й бит
second_num | = (1UL << 6);
// Вывод на печать
display ("Установить 6-й бит second_num =", second_num);
cout << endl;
возврат 0;

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

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

#включать
#включать
#включать
используя пространство имен std;
// функция display ()
пустой дисплей (строка print_msg, целое число)

битсет<16> myBitSet (число);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// выводим число ввода - first_num
cout << endl;
display ("Первое число =", first_num);
// Очистить 2-й бит
first_num & = ~ (1UL << 2);
// Вывод на печать
display ("Установить 2-й бит first_num =", first_num);
cout << endl;
// выводим число ввода - second_num
cout << endl;
display ("Второе число =", second_num);
// Очистить 3-й бит
второе_число & = ~ (1UL << 3);
// Вывод на печать
display ("Установить 3-й бит second_num =", second_num);
cout << endl;
возврат 0;

Заключение

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

SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...
Учебник Battle for Wesnoth
Битва за Веснот - одна из самых популярных стратегических игр с открытым исходным кодом, в которую вы можете играть сейчас. Эта игра не только очень д...
0 А.D. Руководство
Из множества существующих стратегических игр 0 A.D. удается выделиться как всеобъемлющее название и очень глубокая тактическая игра, несмотря на то, ч...