Ich versuchte zu verstehen, wie wenn Bedingung mit bitweisen Operatoren arbeiten. Eine Möglichkeit, zu überprüfen, ob eine Zahl durch kann gerade oder ungerade getan werden muss:Wie funktioniert die Bedingungserklärung mit bitweisen Operatoren?
#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;
}
Der Teil, wenn die Bedingung ist, wie die Arbeit, die ich nicht verstehe. In diesem Fall, wenn i = 8, dann macht die in If-Anweisung 1000 & 1
, die 1000 zurückgeben soll, was gleich 8 ist.
Wenn i = 7, dann in if-Anweisung sollte es 111 & 1
tun, was 111 zurückgibt, die gleich 7 sind
Warum ist es so, dass wenn (8) "even" zurückgibt und wenn (7) "odd" zurückgibt? Ich denke, ich möchte verstehen, was die if-Anweisung prüft, um wahr zu sein und was falsch ist, wenn es um bitweise Operatoren geht.
nur so ein Gedanke, wenn ich diese Frage nach unten ist es geschrieben, weil es tatsächlich ist ja
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?
Ihre Vermutungen darüber, was "x & y" zurückgibt, sind falsch. – chris
"was die if-Anweisung prüft, um wahr zu sein und was falsch ist, wenn es um bitweise Operatoren geht." - Die Überprüfung der Bedingungen kümmert sich nur um das Endergebnis, niemals darum, wie es berechnet wird. –
& ist bitweise und. 1000 ist 1111101000, während 1 1 ist. 1111101000 & 1 ist 0, also ist es falsch. – Cubic