GNU/Linux >> Znalost Linux >  >> Linux

Linux C výukový program programování část 14 - praktické příklady bitových operátorů

V jednom z našich dřívějších článků jsme diskutovali o základech bitových operátorů. Doufám, že jste si tento článek prošli a jste nyní připraveni být svědky a pochopit některé praktické příklady použití těchto operátorů. Takže bez dalších řečí začneme.

1. Prohoďte hodnoty dvou proměnných

Jsem si jistý, že znáte logiku výměny hodnot dvou proměnných. Zahrnuje to převzetí třetí proměnné pro dočasné uložení jedné hodnoty a poté přiřazení této hodnoty jedné z proměnných (jejíž původní hodnota již byla přiřazena druhé proměnné).

Pokud jsou například 'a' a 'b' proměnné, jejichž hodnoty je třeba zaměnit, a 'c' je dočasná proměnná, pak standardní logika funguje následovně:

c =a;
a =b;
b =c;

Věděli jste ale, že celý tento proces výměny lze provést pomocí bitových operátorů? Ano, to je pravda a logika v takovém případě ani nevyžaduje třetí proměnnou. Zde je kód:

#include 

int main()
{
int a, b;

printf("Zadejte první číslo :");
scanf("%d", &a);

printf("Zadejte druhé číslo:");
scanf("%d", &b);

printf("Podle vašeho zadání a =%d, ab =%d", a,b);

a =a ^ b;
b =a ^ b;
a =a ^ b;

printf("\nPo výměně a =%d, ab =%d", a,b);


vrátí 0;
}

Zde je výstup:

Zadejte první číslo:7 
Zadejte druhé číslo:2
Podle vašeho zadání a =7 a b =2
Po výměně a =2 a b =7

2. Zkontrolujte počet binárních '1' v čísle

Někdy se můžete ocitnout v situaci, kdy potřebujete spočítat počet bitů nastavený na „1“ v čísle. Budete rádi, že to můžete snadno provést pomocí bitových operátorů. Zde je logika:

#include 

int main()
{
int a, num_of_bits =0;

printf("Enter číslo:");
scanf("%d", &a);

while(a)
{
if(a &1)
num_of_bits++;

a =a>> 1;
}

printf("\nPočet binárních 1s v tomto čísle je %d", num_of_bits);

vrátí 0;
}

Zde je výstup:

Zadejte číslo:5 

Počet binárních 1 v tomto čísle je 2

3. C program pro kontrolu, zda je daná pozice bitu 1 nebo ne

Někdy, zvláště když pracujete na kódu, který souvisí s počítačovou sítí (protokoly atd.), musíte zkontrolovat, zda je konkrétní bitová pozice nastavena na 1 nebo ne. To lze snadno provést pomocí bitových operátorů.

Zde je kód:

 #include 

int main()
{
int num, position, temp;

printf("Enter číslo:");
scanf("%d", &num);

printf("Zadejte pozici bitu (zachovejte nulu jako základní index a 31 jako maximum):");
scanf("%d", &position);

if(((num>>pozice)&1) ==1)
printf("\nBit na pozici je 1");
else
printf("\nBit na pozici je 0");

return 0;
}

Zde je výstup:

Zadejte číslo:2 
Zadejte pozici bitu (ponechte nulu jako základní index a 31 jako maximum):3

Bit na pozici je 0

4. Převeďte desetinné číslo na jeho binární tvara

Bitové operátory lze také použít k převodu desítkového čísla na jeho binární formu. Zde je jedna logika:

#include 

int main()
{
int num, i =0, temp =0;
int bin[32 ] ={0}; // toto inicializuje všechny prvky pole na 0

/* Zadejte číslo od uživatele */
printf("Zadejte libovolné číslo:");
scanf("%d" , &num);

for(i =31; i>=0; i--)
{
if((číslo &1) ==1)
{
bin[i] =1;

num =num>>1;
}

printf("Binární forma čísla zadané je:");

for(i=0; i<32; i++)
{
printf("%d",bin[i]);
}

return 0;
}

Zde byl výstup v mém případě:

Zadejte libovolné číslo:15 
Binární tvar zadaného čísla je:0000000000000000000000000001111

Závěr

Čtyři příklady, které jsme zde ukázali, by vám měly stačit k tomu, abyste získali dobrou představu o tom, jak lze bitové operátory použít ve scénářích reálného světa. Vyzkoušejte je na svých strojích, vylaďte je a přimějte je udělat více nebo něco nového. V případě jakýchkoli pochybností nebo dotazů napište komentář sem.


Linux
  1. C Výukový program programování Část 5 - Znakové proměnné

  2. Výukový program programování v Linuxu C Část 10 - Variabilní rozsahy

  3. Výukový program programování v Linuxu C Část 9:Řetězce

  1. Výukový program programování Linux C, část 8 – Volání podle hodnoty versus volání podle ukazatele/adresy

  2. Výukový program programování Linux C, část 8 – Volání podle hodnoty versus volání podle ukazatele/adresy

  3. Výukový program programování Linux C, část 8 – Volání podle hodnoty versus volání podle ukazatele/adresy

  1. Výukový program programování v Linuxu C Část 12 – Operátory přiřazení a podmíněné výrazy

  2. Linux C výuka programování, část 11 - Aritmetické, relační a logické operátory

  3. Linux C Programming Tutorial část 15 - 2s Doplňky a záporná čísla