GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Pemrograman Linux C Bagian 14 - Contoh praktis operator Bitwise

Dalam salah satu artikel kami sebelumnya, kami membahas dasar-dasar operator bitwise. Saya harap Anda membaca artikel itu dan sekarang siap untuk menyaksikan dan memahami beberapa contoh penggunaan praktis dari operator ini. Jadi tanpa basa-basi lagi, mari kita mulai.

1. Tukar nilai dua variabel

Saya yakin Anda akan mengetahui logika untuk menukar nilai dari dua variabel. Ini melibatkan pengambilan variabel ketiga untuk menyimpan satu nilai sementara dan kemudian menetapkan nilai itu ke salah satu variabel (yang nilai aslinya telah ditetapkan ke variabel lain).

Misalnya, jika 'a' dan 'b' adalah variabel yang nilainya perlu ditukar, dan 'c' adalah variabel sementara, maka berikut logika standarnya:

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

Tapi tahukah Anda bahwa seluruh proses swapping ini dapat dilakukan melalui operator bitwise? Ya, itu benar, dan logikanya, dalam hal ini, bahkan tidak memerlukan variabel ketiga. Ini kodenya:

#include 

int main()
{
int a, b;

printf("Masukkan bilangan pertama :");
scanf("%d", &a);

printf("Masukkan bilangan kedua:");
scanf("%d", &b);

printf("Sesuai masukan Anda, a =%d, dan b =%d", a,b);

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

printf("\nSetelah bertukar, a =%d, dan b =%d", a,b);


return 0;
}

Berikut outputnya:

Masukkan angka pertama:7 
Masukkan angka kedua:2
Sesuai input Anda, a =7, dan b =2
Setelah bertukar, a =2, dan b =7

2. Periksa jumlah biner '1 dalam angka

Terkadang Anda mungkin menemukan diri Anda dalam situasi di mana Anda perlu menghitung jumlah bit yang disetel ke '1' dalam sebuah angka. Anda akan senang mengetahui bahwa Anda dapat melakukannya dengan mudah menggunakan operator bitwise. Begini logikanya:

#include 

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

printf("Enter angka:");
scanf("%d", &a);

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

a =a>> 1;
}

printf("\nJumlah biner 1 pada bilangan ini adalah %d", num_of_bits);

return 0;
}

Berikut outputnya:

Masukkan angka:5 

Jumlah biner 1 dalam angka ini adalah 2

3. Program C untuk memeriksa apakah posisi bit yang diberikan adalah 1 atau tidak

Terkadang, terutama saat mengerjakan kode yang terkait dengan jaringan komputer (protokol dll), Anda harus memeriksa apakah posisi bit tertentu disetel ke 1 atau tidak. Ini dapat dilakukan dengan mudah menggunakan operator bitwise.

Ini kodenya:

 #include 

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

printf("Enter angka:");
scanf("%d", &num);

printf("Masukkan posisi bit (menjaga nol sebagai indeks dasar dan 31 sebagai maks):");
scanf("%d", &posisi);

if(((num>>posisi)&1) ==1)
printf("\nBit pada posisinya adalah 1");
else
printf("\nBit pada posisi 0");

return 0;
}

Berikut outputnya:

Masukkan angka:2 
Masukkan posisi bit (menjaga nol sebagai indeks dasar dan 31 sebagai maks):3

Bit pada posisi 0

4. Ubah bilangan desimal ke bentuk binernya

Operator bitwise juga dapat digunakan untuk mengonversi angka desimal ke bentuk binernya. Inilah satu logika untuk itu:

#include 

int main()
{
int num, i =0, temp =0;
int bin[32 ] ={0}; // ini akan menginisialisasi semua elemen array ke 0

/* Masukkan angka dari pengguna */
printf("Masukkan angka apa saja:");
scanf("%d" , &bil);

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

num =num>>1;
}

printf("Bentuk biner dari bilangan yang anda masukkan adalah:");

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

return 0;
}

Berikut adalah output dalam kasus saya:

Masukkan angka apa saja:15 
Bentuk biner dari angka yang Anda masukkan adalah:00000000000000000000000000001111

Kesimpulan

Empat contoh yang kami tunjukkan di sini seharusnya cukup untuk memberi Anda ide bagus tentang bagaimana operator bitwise dapat digunakan dalam skenario dunia nyata. Cobalah ini di mesin Anda, sesuaikan, dan buat mereka melakukan lebih banyak, atau sesuatu yang baru. Jika ada keraguan atau pertanyaan, berikan komentar di sini.


Linux
  1. Tutorial Pemrograman C Bagian 5 - Variabel karakter

  2. Tutorial Pemrograman Linux C Bagian 10 - Lingkup Variabel

  3. Tutorial Pemrograman Linux C Bagian 9 :String

  1. Tutorial Pemrograman Linux C Bagian 8 - Call by Value Vs Call by Pointer/Alamat

  2. Tutorial Pemrograman Linux C Bagian 8 - Call by Value Vs Call by Pointer/Alamat

  3. Tutorial Pemrograman Linux C Bagian 8 - Call by Value Vs Call by Pointer/Alamat

  1. Tutorial Pemrograman Linux C Bagian 12 - Operator Penugasan dan Ekspresi Bersyarat

  2. Tutorial Pemrograman Linux C Part 11 - Operator Aritmatika, Relasional, dan Logika

  3. Tutorial Pemrograman Linux C Bagian 15 - Pelengkap 2s dan Angka Negatif