Próbowałem zrozumieć, jak jeśli warunek działa z operatorami bitowymi. sposób sprawdzić, czy liczba jest parzysta lub nieparzysta może być wykonana przez:W jaki sposób instrukcja warunku działa z operacjami bitowymi?
#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;
}
Part I nie rozumiem, jak gdyby praca warunek. W tym przypadku, jeśli i = 8, to w instrukcji If to robi 1000 & 1
, co powinno dać z powrotem 1000, które jest równe 8.
Jeśli i = 7, to w instrukcji if powinno być robione 111 & 1
, które oddaje 111, które są równe 7
Dlaczego tak się dzieje, że jeśli (8) zwróci wartość "parzystą", a jeśli (7) zwróci wartość "nieparzystą"? Chyba chcę zrozumieć, co oświadczenie if sprawdza, czy jest prawdziwe, a co fałszywe, gdy ma do czynienia z operacjami bitowymi.
tylko myśl, kiedy pisałem to pytanie w dół jest to, bo to rzeczywiście robi
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
Twoje domniemania dotyczące zwrotu "x i y" są błędne. – chris
"co stwierdzenie, jeśli sprawdza, czy jest prawdziwe, a co fałszywe, gdy mamy do czynienia z operacjami bitowymi". - sprawdzanie stanu tylko dba o wynik końcowy, nigdy o jego obliczenie. –
& jest bitowe i. 1000 to 1111101000, a 1 to 1. 1111101000 i 1 to 0, więc jest to fałsz. – Cubic