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.
| x | 0 | 0 | 1 | 1 |
| y | 0 | 1 | 0 | 1 |
| x & y | 0 | 0 | 0 | 1 |
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: 0Sfida
FacileTim 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:
- Le pietre magiche compaiono in gruppi di 2.
- Le pietre devono essere selezionate in modo contiguo e il gruppo non deve includere una pietra già selezionata in precedenza.
- 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