Operator Bitwise di C
Halo kesana, para penyihir kode masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia operator bitwise di C. Jangan khawatir jika Anda baru mengenal pemrograman; saya akan menjadi pemandu ramah Anda, menjelaskan semuanya langkah demi langkah. Jadi, pakailah topi belajar Anda, dan mari kita melompatlah!
Apa itu Operator Bitwise?
Sebelum kita mulai, mari kita mengerti apa itu operator bitwise. Bayangkan Anda memiliki sekumpulan saklar lampu. Operator bitwise adalah seperti alat khusus yang memungkinkan Anda untuk mengontrol saklar ini dengan cara yang menarik - menghidupkan atau mematikannya, atau bahkan menukar keadaannya. Di dunia komputer, "saklar" ini实际上是 bits (0 dan 1) yang membuat up data kita.
Sekarang, mari kita eksplorasi setiap operator bitwise satu per satu.
Operator AND Bitwise (&) di C
Operator AND bitwise adalah seperti teman yang picky yang hanya mengatakan "ya" jika kedua input setuju. Ini membandingkan setiap bit dari dua angka dan hanya mengembalikan 1 jika kedua bit adalah 1. Jika tidak, itu mengembalikan 0.
Mari kita lihat contohnya:
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100 dalam biner
unsigned int b = 13; // 13 = 0000 1101 dalam biner
printf("a & b = %d\n", a & b);
return 0;
}
Output:
a & b = 12
Apa yang terjadi di sini? Mari kita pecahkan:
0011 1100 (60 dalam biner)
& 0000 1101 (13 dalam biner)
----------
0000 1100 (12 dalam desimal)
Lihat bagaimana itu hanya menjaga 1 jika kedua angka memiliki 1? Itulah keajaiban operator AND bitwise!
Operator OR (|) Bitwise
Operator OR bitwise adalah seperti teman yang dermawan yang mengatakan "ya" jika salah satu input setuju. Ini mengembalikan 1 jika setidaknya satu dari bit yang sesuai adalah 1.
Inilah contohnya:
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100 dalam biner
unsigned int b = 13; // 13 = 0000 1101 dalam biner
printf("a | b = %d\n", a | b);
return 0;
}
Output:
a | b = 61
Mari kita pecahkan:
0011 1100 (60 dalam biner)
| 0000 1101 (13 dalam biner)
----------
0011 1101 (61 dalam desimal)
Lihat bagaimana itu menjaga 1 di mana saja angka memiliki 1? Itulah operator OR bitwise untuk Anda!
Operator XOR (^) Bitwise
Operator XOR adalah seperti teman yang kikir yang suka hal-hal yang berbeda. Ini mengembalikan 1 jika bit adalah berbeda, dan 0 jika mereka sama.
Mari kita lihat itu dalam aksi:
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100 dalam biner
unsigned int b = 13; // 13 = 0000 1101 dalam biner
printf("a ^ b = %d\n", a ^ b);
return 0;
}
Output:
a ^ b = 49
Ini adalah apa yang terjadi:
0011 1100 (60 dalam biner)
^ 0000 1101 (13 dalam biner)
----------
0011 0001 (49 dalam desimal)
XOR sering digunakan dalam kriptografi karena itu mudah untuk dikembalikan. Jika Anda XOR angka dua kali dengan nilai yang sama, Anda mendapat kembali angka asli. Keren, bukan?
Operator Shift Kiri (<<)
Operator shift kiri adalah seperti rakit penyusup yang memindahkan bit ke kiri. Ini menggeser setiap bit ke kiri oleh jumlah posisi yang ditentukan.
Ini adalah bagaimana itu bekerja:
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100 dalam biner
printf("a << 2 = %d\n", a << 2);
return 0;
}
Output:
a << 2 = 240
Mari kita pecahkan:
0011 1100 (60 dalam biner)
<<2 (shift kiri oleh 2)
----------
1111 0000 (240 dalam desimal)
Lihat bagaimana bit berpindah ke kiri, dan 0 baru mengisi dari kanan? Juga, menggeser ke kiri oleh 1 adalah sama dengan mengkalikan dengan 2. Jadi, menggeser ke kiri oleh 2 adalah seperti mengkalikan dengan 4!
Operator Shift Kanan (>>)
Operator shift kanan adalah seperti kembaran lawan dari shift kiri. Ini memindahkan bit ke kanan.
Mari kita lihat contohnya:
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100 dalam biner
printf("a >> 2 = %d\n", a >> 2);
return 0;
}
Output:
a >> 2 = 15
Ini adalah apa yang terjadi:
0011 1100 (60 dalam biner)
>>2 (shift kanan oleh 2)
----------
0000 1111 (15 dalam desimal)
Bit berpindah ke kanan, dan 0 baru mengisi dari kiri. Menggeser ke kanan oleh 1 adalah seperti membagi dengan 2 (mengabaikan sisa).
Operator Komplemen 1's (~)
Operator komplemen 1's adalah seperti cermin untuk bit. Ini mengalihkan setiap bit dari 0 menjadi 1 dan sebaliknya.
Ini adalah bagaimana itu bekerja:
#include <stdio.h>
int main() {
unsigned int a = 60; // 60 = 0011 1100 dalam biner
printf("~a = %u\n", ~a);
return 0;
}
Output:
~a = 4294967235
Apa yang terjadi di sini? Mari kita pecahkan:
0000 0000 0000 0000 0000 0000 0011 1100 (60 dalam biner 32-bit)
~(komplemen 1's)
----------------------------------------
1111 1111 1111 1111 1111 1111 1100 0011 (4294967235 dalam desimal)
Setiap 0 menjadi 1, dan setiap 1 menjadi 0. Hasilnya terlihat besar karena kita menggunakan unsigned int, yang menginterpretasikan semua itu 1 sebagai angka positif.
Kesimpulan
Dan itu adalah semua, folks! Kita telah melakukan perjalanan melalui tanah operator bitwise di C. Alat yang kuat ini mungkin terlihat sedikit sulit di awal, tetapi dengan latihan, Anda akan menemukan mereka sangat berguna untuk tugas seperti bekerja dengan perangkat keras, mengoptimalkan kode, atau bahkan trik pesta yang keren (jika pesta Anda melibatkan matematika biner, itu adalah).
Ingat, kunci untuk menguasai operator ini adalah latihan. Cobalah untuk menulis program Anda sendiri menggunakan operator ini. Eksperimen dengan angka yang berbeda dan lihat hasil apa yang Anda dapatkan. Sebelum Anda sadar, Anda akan menjadi yang terbaik dalam memainkan bit!
Selamat coding, dan semoga bit selalu berada di pihak Anda!
Operator | Simbol | Deskripsi |
---|---|---|
AND | & | Mengembalikan 1 jika kedua bit adalah 1, jika tidak 0 |
OR | | | Mengembalikan 1 jika setidaknya satu bit adalah 1, jika tidak 0 |
XOR | ^ | Mengembalikan 1 jika bit berbeda, 0 jika sama |
Shift Kiri | << | Menggeser bit ke kiri oleh jumlah posisi yang ditentukan |
Shift Kanan | >> | Menggeser bit ke kanan oleh jumlah posisi yang ditentukan |
Komplemen 1's | ~ | Mengalihkan semua bit (0 menjadi 1, 1 menjadi 0) |
Credits: Image by storyset