C ++

С ++ битови оператори

С ++ битови оператори
В тази статия ще обсъдим битови оператори в езика за програмиране C ++. Ще видим няколко работни примера за подробно разбиране на битовите операции. В C ++ битовите оператори работят на индивидуално битово ниво.

Кратък преглед на битови оператори

Операторът е символ, който инструктира компилатора да извършва определени математически или логически операции. Има няколко вида оператори в C ++, като:

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

Всички битови оператори работят на индивидуално битово ниво. Побитовият оператор може да се приложи само към целочислените и символните типове данни. Например, ако имате променлива от цял ​​тип с размер 32 бита и приложите битова операция НЕ, битовият оператор НЕ ще бъде приложен за всички 32 бита. Така че в крайна сметка всички 32 бита в променливата ще бъдат обърнати.

В C ++ има шест различни побитови оператора:

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

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

Побитовият оператор OR произвежда 1, когато поне един операнд е зададен на 1. Ето таблицата на истината за оператора Bitwise OR:

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

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

Побитовият оператор AND произвежда 1, когато и двата операнда са зададени на 1. Ето таблицата на истината за оператора Bitwise AND:

Бит-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. Ето таблицата на истината за побитовия И оператор:

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

Побитов ляв оператор за смяна

Побитовият ляв Shift оператор измества всички битове, оставени от посочения брой на посочените битове. Ако оставите всички битове на данните да изместят с 1, първоначалните данни ще бъдат умножени по 2. По същия начин, ако оставите всички битове на данните да изместят с 2, първоначалните данни ще бъдат умножени по 4.

Побитов десен оператор за смяна

Операторът за битово дясно превключване измества всички битове надясно с посочения брой битове. Ако преместите надясно всички битове на данните с 1, първоначалните данни ще бъдат разделени (целочислено деление) на 2. По същия начин, ако преместите надясно всички битове на данните с 2, първоначалните данни ще бъдат разделени (целочислено деление) на 4.

Примери

Сега, тъй като разбрахме основната концепция за битови операции, нека разгледаме няколко примера, които ще ви помогнат да разберете битовите операции в C ++:

Примерите 7 и 8 са за демонстриране на реалното използване на битови оператори в езика за програмиране C ++.

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

В този пример на програма ще демонстрираме оператора Bitwise OR.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<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;
дисплей ("First Number is =", first_num);
дисплей ("Second Number is =", second_num);
// отпечатваме изходната стойност
дисплей ("first_num | second_num =", резултат);
Cout << endl;
връщане 0;

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

В този пример на програма ще илюстрираме побитовия И оператор.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<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;
дисплей ("First Number is =", first_num);
splay ("Second Number is =", second_num);
// отпечатваме изходната стойност
показване ("first_num & second_num =", резултат);
Cout << endl;
връщане 0;

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

В този пример на програма ще разберем как Bitwise NOT операторът работи в C++.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<16> myBitSet (число);
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;
// Побитова НЕ операция
резултат_1 = ~ първи_номер;
резултат_2 = ~ втори_номер;
// отпечатваме входните числа и изходната стойност
Cout << endl;
дисплей ("First Number is =", first_num);
дисплей ("~ first_num =", result_1);
Cout << endl;
// отпечатваме входните числа и изходната стойност
дисплей ("Second Number is =", second_num);
дисплей ("~ second_num =", result_2);
Cout << endl;
връщане 0;

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

Тази програма има за цел да обясни как Bitwise XOR операторът работи в C++.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<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;
дисплей ("First Number is =", first_num);
дисплей ("Second Number is =", second_num);
// отпечатваме изходната стойност
показване ("first_num ^ second_num =", резултат);
Cout << endl;
връщане 0;

Пример-5: Оператор на битово ляво превключване

Сега ще видим примера на оператора Bitwise Left Shift. В тази програма декларирахме две числа, first_num и second_num от цяло число. Тук „first_num“ е изместен наляво с един бит, а „second_num“ е изместен наляво с два бита.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<16> myBitSet (число);
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;
// Операция по битова лява смяна
result_1 = first_num << 1;
резултат_2 = втори_номер << 2;
// отпечатваме входните числа и изходната стойност
Cout << endl;
дисплей ("First Number is =", first_num);
дисплей ("first_num << 1     =  ", result_1);
Cout << endl;
// отпечатваме входните числа и изходната стойност
дисплей ("Second Number is =", second_num);
дисплей ("номер_секунда << 2    =  ", result_2);
Cout << endl;
връщане 0;

Пример 6: Оператор на битово превключване на дясно

Сега ще видим още един пример за разбиране на оператора Bitwise Right Shift. Декларирахме две числа, first_num и second_num от цяло число. Тук „first_num“ е изместен надясно с един бит, а „second_num“ е изместен надясно с два бита.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<16> myBitSet (число);
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;
// Операция по битово изместване надясно
result_1 = first_num >> 1;
result_2 = second_num >> 2;
// отпечатваме входните числа и изходната стойност
Cout << endl;
дисплей ("First Number is =", first_num);
дисплей ("first_num >> 1 =", result_1);
Cout << endl;
// отпечатваме входните числа и изходната стойност
дисплей ("Second Number is =", second_num);
дисплей ("second_num >> 2 =", result_2);
Cout << endl;
връщане 0;

Пример-7: Задаване на бит

Този пример има за цел да покаже как да зададете определен бит с помощта на битови оператори.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<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;
дисплей ("First Number is =", first_num);
// Задаване на 5-ти бит
first_num | = (1UL << 5);
// Отпечатване на изход
дисплей ("Задаване на 5-ти бит от first_num =", first_num);
Cout << endl;
// отпечатваме входния номер - second_num
Cout << endl;
display ("Second Number is =", second_num); // Задаване на 6-ти бит
номер_секунда | = (1UL << 6);
// Отпечатване на изход
дисплей ("Set 6th bit of second_num =", second_num);
Cout << endl;
връщане 0;

Пример-8: Изчистване на бита

Този пример има за цел да покаже как да изчистите определен бит с помощта на битови оператори.

#include
#include
#include
използване на пространство от имена std;
// функция display ()
показване на празнота (низ print_msg, int номер)

битсет<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;
дисплей ("First Number is =", first_num);
// Изчистване на 2-ри бит
first_num & = ~ (1UL << 2);
// Отпечатване на изход
дисплей ("Задаване на 2-ри бит от first_num =", first_num);
Cout << endl;
// отпечатваме входния номер - second_num
Cout << endl;
дисплей ("Second Number is =", second_num);
// Изчистване на 3-ти бит
номер_секунда & = ~ (1UL << 3);
// Отпечатване на изход
дисплей ("Задаване на 3-ти бит от second_num =", second_num);
Cout << endl;
връщане 0;

Заключение

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

Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...
Как да инсталирате League Of Legends на Ubuntu 14.04
Ако сте фен на League of Legends, това е възможност за вас да тествате League of Legends. Имайте предвид, че LOL се поддържа на PlayOnLinux, ако сте п...
Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...