Ц ++

Ц ++ битовни оператори

Ц ++ битовни оператори
У овом чланку ћемо разговарати о битним операторима у програмском језику Ц ++. Видећемо неколико радних примера за детаљно разумевање битних операција. У Ц ++, битни оператори раде на појединачном нивоу бита.

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

Оператор је симбол који преводилац упућује на извођење одређених математичких или логичких операција. Постоји неколико врста оператора у језику Ц ++, као што су:

  1. Аритметички оператори
  2. Логички оператори
  3. Релациони оператори
  4. Оператори доделе
  5. Бит-ови оператори
  6. Мисц Операторс

Сви битовни оператори раде на појединачном нивоу бита. Битовни оператор се може применити само на целобројне и знаковне типове података. На пример, ако имате целобројну променљиву типа величине 32 бита и примените битну операцију НОТ, битовни НОТ оператор примењиваће се на свих 32 бита. Дакле, на крају ће сва 32 бита у променљивој бити обрнута.

У Ц ++ је доступно шест различитих битних оператора:

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

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

Табела истине по битима

Битни оператор НОТ обрће операнд. Ево табеле истине за битни НОТ оператор:

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

Тачка истине у битовима КСОР

Бит-ов КСОР оператор даје 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.

Примери

Сада, пошто смо разумели основни концепт битних операција, погледајмо неколико примера који ће вам помоћи да разумете битне операције у Ц ++:

Примери 7 и 8 су за демонстрацију стварне употребе битних оператора у програмском језику Ц ++.

Пример-1: Битни ИЛИ оператор

У овом примеру програма, демонстрираћемо битни ИЛИ оператор.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9, резултат = 0;
// Операција у битовима ИЛИ
резултат = први_број | сецонд_нум;
// исписујемо улазне бројеве
цоут << endl;
приказ ("Први број је =", први_број);
приказ ("Други број је =", други_број);
// исписује излазну вредност
приказ ("први_број | други_број =", резултат);
цоут << endl;
ретурн 0;

Пример-2: Битни И оператор

У овом примеру програма илустроваћемо Битвисе АНД оператор.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9, резултат = 0;
// Битни рад И
резултат = први_број & други_број;
// исписујемо улазне бројеве
цоут << endl;
приказ ("Први број је =", први_број);
сплаи ("Други број је =", други_број);
// исписује излазну вредност
приказ ("први_број & други_број =", резултат);
цоут << endl;
ретурн 0;

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

У овом примеру програма ћемо разумети како Битвисе НОТ оператер ради у Ц++.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9, резултат_1 = 0, резултат_2 = 0;
// Операција у битовима НОТ
резултат_1 = ~ први_број;
резултат_2 = ~ други_број;
// исписујемо улазне бројеве и излазну вредност
цоут << endl;
приказ ("Први број је =", први_број);
приказ ("~ први_број =", резултат_1);
цоут << endl;
// исписујемо улазне бројеве и излазну вредност
приказ ("Други број је =", други_број);
приказ ("~ други_број =", резултат_2);
цоут << endl;
ретурн 0;

Пример-4: Бит-ов КСОР оператор

Овај програм намерава да објасни како Битвисе КСОР оператор ради на Ц++.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9, резултат = 0;
// Битно КСОР операција
резултат = први_број ^ други_број;
// исписујемо улазне бројеве
цоут << endl;
приказ ("Први број је =", први_број);
приказ ("Други број је =", други_број);
// исписује излазну вредност
приказ ("први_број ^ други_број =", резултат);
цоут << endl;
ретурн 0;

Пример-5: Оператор левог помака у битовима

Сада ћемо видети пример Битвисе Лефт Схифт оператора. У овом програму смо прогласили два броја, први_број и други_број целобројног типа. Овдје је "први_број" помакнут за један бит улијево, а "други_нум" за два бита.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9, резултат_1 = 0, резултат_2 = 0;
// Операција с помаком улијево
резултат_1 = први_број << 1;
резултат_2 = други_број << 2;
// исписујемо улазне бројеве и излазну вредност
цоут << endl;
приказ ("Први број је =", први_број);
дисплаи ("први_број << 1     =  ", result_1);
цоут << endl;
// исписујемо улазне бројеве и излазну вредност
приказ ("Други број је =", други_број);
дисплаи ("сецонд_нум << 2    =  ", result_2);
цоут << endl;
ретурн 0;

Пример-6: Оператор брзине удесно у десно

Сада ћемо видети још један пример за разумевање оператора Битвисе Ригхт Схифт. Прогласили смо два броја, први_број и други_број целобројног типа. Овде је „први_број“ померен удесно за један бит, а „други_број“ је померен удесно за два бита.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9, резултат_1 = 0, резултат_2 = 0;
// Операција померања удесно удесно
резултат_1 = први_број >> 1;
резултат_2 = други_број >> 2;
// исписујемо улазне бројеве и излазну вредност
цоут << endl;
приказ ("Први број је =", први_број);
приказ ("први_број >> 1 =", резултат_1);
цоут << endl;
// исписујемо улазне бројеве и излазну вредност
приказ ("Други број је =", други_број);
приказ ("сецонд_нум >> 2 =", ресулт_2);
цоут << endl;
ретурн 0;

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

Овај пример намерава да покаже како поставити одређени бит помоћу битних оператора.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9;
// исписујемо улазни број - први_број
цоут << endl;
приказ ("Први број је =", први_број);
// Сет 5тх бит
први_број | = (1УЛ << 5);
// Излаз за штампу
дисплаи ("Сет 5тх бит оф фирст_нум =", фирст_нум);
цоут << endl;
// исписујемо улазни број - сецонд_нум
цоут << endl;
дисплаи ("Сецонд Нумбер ис =", сецонд_нум); // Постави 6. бит
други_број | = (1УЛ << 6);
// Излаз за штампу
дисплаи ("Сет 6тх бит оф сецонд_нум =", сецонд_нум);
цоут << endl;
ретурн 0;

Пример-8: Цлеар Бит

Овај пример има за циљ да покаже како очистити одређени бит помоћу битних оператора.

#инцлуде
#инцлуде
#инцлуде
коришћење простора имена стд;
// функција дисплаи ()
приказ празнине (стринг принт_мсг, инт број)

битсет<16> миБитСет (број);
цоут << print_msg;
цоут << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

инт маин ()

инт први_број = 7, други_број = 9;
// исписујемо улазни број - први_број
цоут << endl;
приказ ("Први број је =", први_број);
// Обриши 2. бит
први_број & = ~ (1УЛ << 2);
// Излаз за штампу
дисплаи ("Сет 2нд бит оф фирст_нум =", фирст_нум);
цоут << endl;
// исписујемо улазни број - сецонд_нум
цоут << endl;
приказ ("Други број је =", други_број);
// Обриши 3. бит
други_број & = ~ (1УЛ << 3);
// Излаз за штампу
дисплаи ("Сет 3рд бит оф сецонд_нум =", сецонд_нум);
цоут << endl;
ретурн 0;

Закључак

Битовни оператор се првенствено користи за манипулисање појединачним битовима за целобројни и карактерни тип података. Битовни оператор се у великој мери користи у развоју уграђеног софтвера. Дакле, ако развијате управљачки програм уређаја или систем врло близу хардверског нивоа, можда ћете желети да користите ове битне операторе.

Бесплатни и отворени кодни покретачки програми за развој Линук игара
Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...
Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...
Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...