Dalam program komputer, operator bitwise adalah operator untuk memanipulasi pola bit dalam ekspresi. Bitwise AND, OR, eksklusif OR (XOR), NOT, shift kanan dan shift kiri adalah operasi umum. Sebagian besar bahasa pemrograman komputer mencakup keenam operator ini. Mereka sering digunakan untuk mengatur, membersihkan atau membalik bit individu dalam program yang mengontrol perangkat keras komputer. Operator bitwise juga sering digunakan dalam enkripsi data dan algoritma kompresi.
Operator bitwise umum biasanya direpresentasikan secara simbolis dalam bahasa pemrograman seperti C, C++ dan Java. Mereka digunakan dalam ekspresi seperti halnya operator aritmatika seperti tanda plus atau minus. Operator bitwise AND direpresentasikan dengan ampersand &, OR dengan pipa | dan XOR dengan tanda sisipan ^. NOT, juga dikenal sebagai operator komplemen, dilambangkan dengan tilde ~.
Operator shift kanan menggunakan tanda sisipan ganda yang menunjuk ke kanan >>. Sebaliknya, pergeseran kiri ditunjukkan oleh tanda sisipan ganda yang mengarah ke kiri. Java menyertakan operasi shift kanan lainnya, ditunjukkan dengan triple-caret yang menunjuk ke kanan >>>.
Operator bitwise menerapkan operasi logis untuk setiap pasangan bit dalam operan mereka. TIDAK, shift kanan dan shift kiri hanya memiliki satu operan yang benar; nilai kedua dalam operasi shift adalah jumlah bit. Untuk lebih memahami cara kerja operator bitwise, seseorang dapat memvisualisasikan operan mereka sebagai angka biner. Misalnya, operator pelengkap membalik setiap bit operan tunggalnya ke keadaan yang berlawanan. Satu menjadi nol dan nol menjadi satu. Komplemen dari nilai biner 8-bit 00110101 adalah 11001010.
Operator AND memiliki dua operand. Sedikit demi sedikit, operasi AND yang logis dilakukan menggunakan satu bit yang sesuai dari setiap operan. Hasil dari setiap operasi bit ditempatkan pada posisi bit dari hasil keseluruhan. Sebagai contoh, operator AND akan memproses bit 7 dari satu operan dengan bit 7 dari operan lainnya. Hasilnya akan disimpan di bit 7 dari hasil keseluruhan.
Dalam operasi AND, kedua bit operan harus satu agar hasilnya menjadi satu, jika tidak hasilnya nol. Misalnya, jika nilai biner 8-bit dari operan adalah 00110101 dan 11110000, hasilnya akan menjadi 00110000. Penggunaan umum operator AND adalah menghilangkan bit tertentu dalam hasil. Ini dilakukan dengan menempatkan nol pada posisi bit tersebut di salah satu operan.
Dalam operasi OR, kedua bit operan harus nol agar hasilnya nol; jika tidak, hasilnya adalah satu. Penggunaan umum dari operator OR adalah untuk mengatur bit tertentu dari hasil menjadi bit. Ini dilakukan dengan menempatkan satu di posisi bit tersebut di salah satu operan. Untuk operasi XOR, hasilnya adalah nol jika kedua bit operan adalah nol atau jika kedua bit operan adalah satu—jika tidak, hasilnya adalah satu.
Shift kiri dan shift kanan memindahkan bit dalam operan ke kiri atau kanan dengan jumlah posisi bit yang ditentukan. Pergeseran kanan logis memindahkan nol ke bit paling kiri sebagai bagian dari pergeseran. Pergeseran kanan aritmatika menyalin bit paling kiri—bit tanda—sebelum pergeseran ke posisi yang sama setelah pergeseran. Bit asli juga digeser ke kanan bersama dengan sisanya. Salah satu jenis shift kiri memindahkan nol ke bit paling kanan.
Ketika sebuah operan digeser ke kanan, bit paling kanan sebelum shift dibuang begitu saja. Demikian pula, bit paling kiri sebelum shift kiri dibuang. Itu tidak membungkus ke ujung lain dari operan.
Operasi pergeseran bitwise bergantung pada bahasa dan implementasi. Misalnya, dalam C dan C++, >> dan melakukan pergeseran logis jika operan adalah bilangan bulat yang tidak ditandatangani. Jika operan adalah bilangan bulat bertanda, ada kemungkinan bahwa pergeseran aritmatika akan dilakukan sebagai gantinya. Di Jawa, semua operan dianggap ditandatangani, dan pergeseran aritmatika selalu dilakukan dengan >> dan . Operator >>> digunakan untuk pergeseran kanan logis, tetapi masih mungkin untuk secara tidak sengaja melakukan pergeseran kanan aritmatika sebagai gantinya tanpa pengetikan yang hati-hati.
Komplikasi juga dapat muncul ketika operan memiliki panjang bit yang berbeda atau ketika ada yang ditandatangani dan ada yang tidak. Operator bitwise dan konstanta numerik di tengah ekspresi kompleks mungkin tidak dievaluasi seperti yang diantisipasi. Perhatian harus diberikan untuk menentukan ukuran dan sifat yang ditandatangani/tidak ditandatangani dari setiap kuantitas dalam ekspresi. Hal ini dapat dilakukan dengan typecasting hati-hati atau tugas sementara untuk jenis variabel tertentu dalam kode program.