Ho cercato di capire come funziona se le condizioni funzionano con operatori bit a bit. un modo per verificare se un numero è pari o dispari può essere fatto da:Come funziona l'istruzione condizionale con gli operatori bit-wise?
#include <iostream>
#include <string>
using namespace std;
string test()
{
int i = 8; //a number
if(i & 1)
return "odd";
else
return "even";
}
int main()
{
cout << test();
return 0;
}
La parte che non capisco è come la se la condizione di lavoro. In questo caso se i = 8 allora l'istruzione in If sta facendo 1000 & 1
che dovrebbe restituire 1000 quale uguale 8.
Se i = 7, quindi in if istruzione dovrebbe fare 111 & 1
che restituisce 111 che equivale a 7
Perché è il caso che se (8) si restituisce "pari" e se (7) si restituisce "dispari"? Immagino di voler capire cosa l'istruzione if sta controllando per essere True e cosa sia False quando si tratta di operatori bit-wise.
solo un pensiero quando ho scritto questa domanda è giù perché è in realtà facendo
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
Le tue presunzioni su cosa 'x & y' return sono errate. – chris
"che cosa l'istruzione if sta verificando per essere True e cosa essere False quando si tratta di operatori bit-wise." - il controllo delle condizioni si preoccupa solo del risultato finale, mai di come è calcolato. –
& è bit a bit e. 1000 è 1111101000, mentre 1 è 1. 1111101000 e 1 è 0, quindi è falso. – Cubic