Menu
Coddy logo textTech

Operatore AND

Lezione 5 di 17 del corso Manipolazione dei bit di Coddy.

Operatore AND ( &)

AND bit a bit è un operatore binario che opera su due sequenze di bit della stessa lunghezza. Se entrambi i bit nella posizione confrontata delle sequenze di bit sono 1, il bit nella sequenza di bit risultante è 1, altrimenti è 0.  Il simbolo '&' rappresenta l'operatore AND.

La tabella seguente mostra l'operazione AND su due bit.

x0011
y0101
x & y0001

Facciamo un esempio per comprendere meglio l'operazione AND.

Nell'esempio qui sopra abbiamo eseguito l'operazione AND su (11)10 e (6)10 , ottenendo (2)10. Abbiamo semplicemente scritto questi numeri nella loro forma binaria e confrontato i due bit; se era presente uno zero, abbiamo semplicemente inserito 0 nella sequenza di bit risultante.

Utilizzo:

int a = 1;
int b = 0;
>> a & b
OUTPUT: 0
challenge icon

Sfida

Facile

Tim scopre alcune pietre in una grotta mentre fa trekking, sulle quali sono scritti dei numeri. Tutte le pietre sono disposte in una sequenza. Vicino a quelle pietre scopre un diario mistico che dice che queste pietre sono magiche e riporta alcune condizioni che devono essere soddisfatte affinché possano compiere la magia. Eccole:

  1. Le pietre magiche compaiono in gruppi di 2.
  2. Le pietre devono essere selezionate in modo contiguo e il gruppo non deve includere una pietra già selezionata in precedenza. 
  3. La terza condizione era illeggibile. Quindi, Tim fa degli esperimenti con le pietre e scopre che la magia viene compiuta solo quando l'operazione AND applicata ai numeri presenti nel gruppo restituisce zero.

Trova il gruppo che ha compiuto la magia e restituisci il numero scritto sulla prima pietra del gruppo. 

Per esempio, supponiamo che le pietre che ha trovato siano disposte così:

[ 5 , 2 , 3 , 6 , 1 , 9 ]

Per prima cosa, Tim divide queste pietre in gruppi contigui e non ripetuti di 2. { (5,2) , (3,6) , (1,9) }

Poi esegue l'operazione AND ( & ) su questi gruppi e scopre che sarà il primo gruppo a compiere la magia. 5=> (101)2 e 2=>(010)2. Solo questo gruppo, tra i tre, restituirà zero quando si esegue l'operazione AND sui suoi elementi.

E l'output che otterremo è 5, poiché ci serve il numero sulla prima pietra del gruppo per identificarlo.

Nota inoltre che tutte le sequenze contengono un numero pari di elementi e che, tra le sequenze date, esiste sempre uno e un solo gruppo che compirà la magia. La tua sfida è completare la funzione "MagicStones" per trovare il gruppo magico scoperto da Tim.

Provalo tu

#include <iostream>
#include <vector>
using namespace std;

int MagicStones(vector<int> stone_sequence) {
    // Scrivi il codice qui
}

Tutte le lezioni di Manipolazione dei bit

Esercitati da solo: Compilatore C++ online