Operator AND
Pelajaran 5 dari 17 dalam kursus Manipulasi Bit di Coddy.
Operator AND ( &)
AND bitwise adalah operator biner yang bekerja pada dua pola bit dengan panjang yang sama. Jika kedua bit pada posisi yang dibandingkan dalam pola bit bernilai 1, bit dalam pola bit hasilnya bernilai 1, jika tidak, bernilai 0. Simbol '&' mewakili operator AND.
Tabel di bawah ini menunjukkan operasi AND pada dua bit.
| x | 0 | 0 | 1 | 1 |
| y | 0 | 1 | 0 | 1 |
| x & y | 0 | 0 | 0 | 1 |
Mari kita lihat contoh untuk memahami operasi AND dengan lebih baik.

Pada contoh di atas, kita melakukan operasi AND pada (11)10 dan (6)10 yang menghasilkan (2)10. Kita cukup menuliskan angka-angka ini dalam bentuk binernya dan membandingkan kedua bitnya. Jika ada nilai nol, kita cukup menyertakan 0 dalam pola bit hasilnya.
Penggunaan:
int a = 1;
int b = 0;
>> a & b
OUTPUT: 0Tantangan
MudahTim menemukan beberapa batu di sebuah gua saat mendaki. Batu-batu itu memiliki angka tertulis di atasnya dan semuanya tersusun dalam sebuah urutan. Di dekat batu-batu itu, ia menemukan sebuah buku harian mistis yang menyatakan bahwa batu-batu ini ajaib dan menyebutkan kondisi tertentu agar batu-batu itu dapat melakukan sihir. Kondisinya adalah:
- Batu ajaib muncul dalam kelompok yang terdiri dari 2 batu.
- Batu-batu harus dipilih secara berurutan dan kelompoknya tidak boleh mencakup batu yang sudah dipilih sebelumnya.
- Kondisi ketiga tidak terbaca. Jadi, Tim bereksperimen dengan batu-batu itu dan mengetahui bahwa sihir hanya terjadi ketika operasi AND diterapkan pada angka-angka dalam kelompok tersebut dan menghasilkan nol.
Temukan kelompok yang melakukan sihir dan keluarkan angka yang tertulis pada batu pertama dalam kelompok tersebut.
Misalnya, batu-batu yang ia temukan tersusun seperti ini:
[ 5 , 2 , 3 , 6 , 1 , 9 ]Jadi, pertama-tama Tim membagi batu-batu ini menjadi kelompok berurutan yang tidak berulang, masing-masing terdiri dari 2 batu. { (5,2) , (3,6) , (1,9) }
Kemudian, ia melakukan operasi AND ( & ) pada kelompok-kelompok ini dan mengetahui bahwa kelompok pertama yang akan melakukan sihir. 5=> (101)2 dan 2=>(010)2. Dari ketiga kelompok tersebut, hanya kelompok ini yang menghasilkan nol saat operasi AND dilakukan pada batu-batunya.
Output yang kita dapatkan adalah 5, karena kita memerlukan angka pada batu pertama dalam kelompok tersebut untuk mengidentifikasi kelompoknya.
Perhatikan juga bahwa semua urutan berisi elemen dalam jumlah genap, dan dari urutan yang diberikan selalu ada tepat satu kelompok yang akan melakukan sihir. Tantanganmu adalah melengkapi fungsi "MagicStones" untuk menemukan kelompok ajaib yang ditemukan Tim.
Coba sendiri
#include <iostream>
#include <vector>
using namespace std;
int MagicStones(vector<int> stone_sequence) {
// Tulis kodemu di sini
}Semua pelajaran di Manipulasi Bit
Latihan sendiri: Compiler C++ online
Periksa konversi: Konverter Basis Bilangan