Saya pikir bagian kedua dari pertanyaan itu:
Juga, untuk apa sebenarnya operator bitwise digunakan? Saya menghargai beberapa contoh.
Hanya ditangani sebagian. Ini adalah dua sen saya untuk masalah itu.
Operasi bitwise dalam bahasa pemrograman memainkan peran mendasar saat menangani banyak aplikasi. Hampir semua komputasi tingkat rendah harus dilakukan dengan menggunakan operasi semacam ini.
Di semua aplikasi yang perlu mengirim data antara dua node, seperti:
Pada lapisan komunikasi tingkat bawah, data biasanya dikirim dalam apa yang disebut bingkai . Bingkai hanyalah string byte yang dikirim melalui saluran fisik. Bingkai ini biasanya berisi data aktual ditambah beberapa bidang lain (dikodekan dalam byte) yang merupakan bagian dari apa yang disebut tajuk . Header biasanya berisi byte yang menyandikan beberapa informasi yang berkaitan dengan status komunikasi (misalnya, dengan bendera (bit)), penghitung bingkai, kode koreksi dan deteksi kesalahan, dll. Untuk mendapatkan data yang dikirimkan dalam bingkai, dan untuk membangun frame untuk mengirim data, Anda akan memerlukan operasi bitwise pasti.
Secara umum, ketika menangani aplikasi semacam itu, API tersedia sehingga Anda tidak perlu berurusan dengan semua detail itu. Misalnya, semua bahasa pemrograman modern menyediakan pustaka untuk koneksi soket, jadi Anda sebenarnya tidak perlu membuat bingkai komunikasi TCP / IP. Tetapi pikirkan tentang orang-orang baik yang memprogram API tersebut untuk Anda, mereka pasti berurusan dengan konstruksi bingkai; menggunakan semua jenis operasi bitwise untuk bolak-balik dari komunikasi tingkat rendah ke tingkat yang lebih tinggi.
Sebagai contoh konkret, bayangkan seseorang memberi Anda file yang berisi data mentah yang ditangkap langsung oleh perangkat keras telekomunikasi. Dalam hal ini, untuk menemukan bingkai, Anda perlu membaca byte mentah dalam file dan mencoba menemukan beberapa jenis kata sinkronisasi, dengan memindai data sedikit demi sedikit. Setelah mengidentifikasi kata-kata sinkronisasi, Anda perlu mendapatkan bingkai sebenarnya, dan SHIFT jika perlu (dan itu baru permulaan cerita) untuk mendapatkan data aktual yang sedang dikirim.
Kelompok aplikasi tingkat rendah lain yang sangat berbeda adalah ketika Anda perlu mengontrol perangkat keras menggunakan beberapa port (jenis kuno), seperti port paralel dan serial. Porta ini dikontrol dengan mengatur beberapa byte, dan setiap bit dari byte tersebut memiliki arti khusus, dalam hal instruksi, untuk port tersebut (lihat misalnya http://en.wikipedia.org/wiki/Parallel_port ). Jika Anda ingin membangun perangkat lunak yang melakukan sesuatu dengan perangkat keras tersebut, Anda memerlukan operasi bitwise untuk menerjemahkan instruksi yang ingin Anda jalankan ke byte yang dipahami oleh port.
Misalnya, jika Anda memiliki beberapa tombol fisik yang terhubung ke port paralel untuk mengontrol beberapa perangkat lain, ini adalah baris kode yang dapat Anda temukan di aplikasi lunak:
read = ((read ^ 0x80) >> 4) & 0x0f;
Semoga ini berkontribusi.