条件がビット演算子でどのように機能するかを理解しようとしました。数値が偶数か奇数かを確認する方法は、次の方法で実行できます。
#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;
}
私が理解していない部分は、if条件がどのように機能するかです。この場合、i = 8の場合、それが実行しているin Ifステートメントは、1000 & 1
8に等しい1000を返す必要があります。
i = 7の場合、ifステートメントでは、111 & 1
7に等しい111を返すことを実行する必要があります。
if(8)が「even」を返し、if(7)が「odd」を返すのはなぜですか?ビット単位の演算子を処理するときに、ifステートメントがTrueであるか、Falseであるかを理解したいと思います。
私がこの質問を書き留めたときの考えは、それが実際にやっているからです
for 8: 1000 & 0001 which gives 0
for 7: 0111 & 0001 which gives 1?