C ++

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

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

Короткий огляд побітових операторів

Оператор - це символ, який вказує компілятору виконувати певні математичні або логічні операції. У C ++ існує кілька типів операторів, таких як:

  1. Арифметичні оператори
  2. Логічні оператори
  3. Реляційні оператори
  4. Оператори присвоєння
  5. Побітові оператори
  6. Різні оператори

Всі побітові оператори працюють на індивідуальному рівні розрядів. Побітовий оператор можна застосувати лише до цілочисельних та символьних типів даних. Наприклад, якщо у вас є цілочисельна змінна типу розміром 32 біти, і ви застосовуєте побітове операцію NOT, побітове оператор NOT застосовуватиметься до всіх 32 бітів. Отже, врешті-решт, усі 32 біти у змінної будуть інвертовані.

У C ++ доступно шість різних побітових операторів:

  1. Побітове АБО (представлене як "|"]
  2. Побітове І (представлене як “&”)
  3. Побітове НЕ [представляється як «~»]
  4. Побітовий XOR [представлений як „^“]
  5. Побітовий лівий зсув [представлений як „<<”]
  6. Побітове зрушення вправо [представляється як “>>”]

Побітове АБО Таблиця правди

Побітовий оператор АБО видає 1, коли принаймні для одного операнда встановлено значення 1. Ось таблиця істинності для побітового оператора АБО:

Біт-1 Біт-2 Біт-1 | Біт-2
0 0 0
0 1 1
1 0 1
1 1 1

Побітовий І Таблиця правди

Побітовий оператор AND видає 1, коли для обох операндів встановлено значення 1. Ось таблиця істинності для побітового І оператора:

Біт-1 Біт-2 Біт-1 і Біт-2
0 0 0
0 1 0
1 0 0
1 1 1

Таблиця правди побітно НЕ

Побітовий оператор NOT інвертує операнд. Ось таблиця істинності для побітового оператора NOT:

Біт-1 ~ Біт-1
0 1
1 0

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

Побітовий оператор XOR видає 1, якщо і лише тоді, коли для одного з операндів встановлено значення 1. Ось таблиця істинності оператора Bitwise AND:

Біт-1 Біт-2 Біт-1 ^ Біт-2
0 0 0
0 1 1
1 0 1
1 1 0

Побітовий лівий оператор зсуву

Побітовий оператор лівого зсуву зміщує всі біти, залишені заданою кількістю зазначених бітів. Якщо ви зсунули всі біти даних вліво на 1, вихідні дані будуть помножені на 2. Подібним чином, якщо ви зсунули всі біти даних уліво на 2, вихідні дані будуть помножені на 4.

Побітовий правий оператор зсуву

Побітовий оператор Shift Right зміщує всі біти прямо на вказану кількість вказаних бітів. Якщо зрушити всі біти даних праворуч на 1, вихідні дані будуть розділені (цілочисельний поділ) на 2. Подібним чином, якщо зрушити всі біти даних вправо на 2, вихідні дані будуть розділені (цілочисельний поділ) на 4.

Приклади

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

Приклади 7 і 8 служать для демонстрації реального використання побітових операторів на мові програмування С ++.

Приклад-1: Побітовий АБО Оператор

У цьому прикладі програми ми продемонструємо побітовий оператор АБО.

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

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

int main ()

int first_num = 7, second_num = 9, result = 0;
// Побітова операція АБО
результат = номер_першого | другий_ номер;
// надрукувати введені номери
кут << endl;
display ("First Number is =", first_num);
дисплей ("Друге число - це =", номер_секунди);
// виводимо вихідне значення
відображення ("first_num | second_num =", результат);
кут << endl;
повернути 0;

Приклад-2: Побітове та оператор

У цьому прикладі програми ми проілюструємо побітове оператор І.

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

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

int main ()

int first_num = 7, second_num = 9, result = 0;
// Розрядна операція І
результат = номер_першого & номер_другого;
// надрукувати введені номери
кут << endl;
display ("First Number is =", first_num);
splay ("Другий номер =", номер_секунди);
// виводимо вихідне значення
відображення ("first_num & second_num =", результат);
кут << endl;
повернути 0;

Приклад-3: Побітовий оператор NOT

У цьому прикладі програми ми зрозуміємо, як побітовий оператор NOT працює в C++.

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

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

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Побітова операція NOT
result_1 = ~ first_num;
result_2 = ~ номер_секунди;
// друк вхідних чисел і вихідного значення
кут << endl;
display ("First Number is =", first_num);
відображення ("~ first_num =", result_1);
кут << endl;
// друк вхідних чисел і вихідного значення
дисплей ("Друге число - це =", номер_секунди);
відображення ("~ номер_секунди =", результат_2);
кут << endl;
повернути 0;

Приклад-4: Побітовий оператор XOR

Ця програма має на меті пояснити, як працює побітовий оператор XOR в C++.

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

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

int main ()

int first_num = 7, second_num = 9, result = 0;
// Побітова операція XOR
результат = номер_першого ^ номер_секунди;
// надрукувати введені номери
кут << endl;
display ("First Number is =", first_num);
дисплей ("Друге число - це =", номер_секунди);
// виводимо вихідне значення
відображення ("first_num ^ second_num =", результат);
кут << endl;
повернути 0;

Приклад-5: Побітовий лівий оператор зсуву

Тепер ми побачимо приклад оператора Bitwise Left Shift. У цій програмі ми оголосили два числа, first_num і second_num цілочисельного типу. Тут “first_num” зсувається ліворуч на один біт, а “second_num” зсувається ліворуч на два біти.

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

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

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Побітова операція лівого зсуву
result_1 = first_num << 1;
result_2 = second_num << 2;
// друк вхідних чисел і вихідного значення
кут << endl;
display ("First Number is =", first_num);
display ("first_num << 1     =  ", result_1);
кут << endl;
// друк вхідних чисел і вихідного значення
дисплей ("Друге число - це =", номер_секунди);
display ("номер_секунди << 2    =  ", result_2);
кут << endl;
повернути 0;

Приклад-6: Побітовий оператор зрушення вправо

Тепер ми побачимо ще один приклад розуміння оператора побітового правого зсуву. Ми оголосили два числа, first_num і second_num цілочисельного типу. Тут “first_num” зміщується вправо на один біт, а “second_num” зміщується вправо на два біти.

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

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

int main ()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Побітова операція зрушення вправо
result_1 = first_num >> 1;
result_2 = second_num >> 2;
// друк вхідних чисел і вихідного значення
кут << endl;
display ("First Number is =", first_num);
відображення ("first_num >> 1 =", result_1);
кут << endl;
// друк вхідних чисел і вихідного значення
дисплей ("Друге число - це =", номер_секунди);
відображення ("second_num >> 2 =", result_2);
кут << endl;
повернути 0;

Приклад-7: Встановити біт

Цей приклад має на меті показати, як встановити певний біт за допомогою побітових операторів.

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

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

int main ()

int first_num = 7, second_num = 9;
// друк введеного номера - first_num
кут << endl;
display ("First Number is =", first_num);
// Встановити 5 біт
first_num | = (1UL << 5);
// Виведення друку
дисплей ("Встановити 5-й біт first_num =", first_num);
кут << endl;
// друк введеного номера - second_num
кут << endl;
display ("Second Number is =", second_num); // Встановити 6-й біт
номер_секунди | = (1UL << 6);
// Виведення друку
дисплей ("Встановити 6-й біт second_num =", second_num);
кут << endl;
повернути 0;

Приклад-8: Очистити біт

Цей приклад має на меті показати, як очистити певний біт за допомогою побітових операторів.

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

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

int main ()

int first_num = 7, second_num = 9;
// друк введеного номера - first_num
кут << endl;
display ("First Number is =", first_num);
// Очистити 2-й біт
first_num & = ~ (1UL << 2);
// Виведення друку
дисплей ("Встановити 2-й біт first_num =", first_num);
кут << endl;
// друк введеного номера - second_num
кут << endl;
дисплей ("Друге число - це =", номер_секунди);
// Очистити 3-й біт
другий_ номер & = ~ (1UL << 3);
// Виведення друку
дисплей ("Встановити 3-й біт second_num =", second_num);
кут << endl;
повернути 0;

Висновок

Побітовий оператор в основному використовується для маніпулювання окремими бітами для цілочисельного та символьного типу даних. Побітовий оператор активно використовується при розробці вбудованого програмного забезпечення. Отже, якщо ви розробляєте драйвер пристрою або систему, дуже близьку до апаратного рівня, можливо, ви захочете використовувати ці побітові оператори.

Як зафіксувати та транслювати ігровий сеанс на Linux
Раніше грати в ігри вважалося лише хобі, але з часом ігрова індустрія спостерігала величезний ріст з точки зору технологій та кількості гравців. Аудит...
Найкращі ігри для гри з відстеженням рук
Нещодавно Oculus Quest представив чудову ідею відстеження рук без контролерів. Завдяки постійно зростаючій кількості ігор та заходів, які виконують пі...
Як показати накладання екранного меню в повноекранному додатку та іграх для Linux
Гра у повноекранні ігри або використання додатків у повноекранному повноекранному режимі може відключити від відповідної системної інформації, видимої...