47291


C++の変数nの奇数、偶数を調べる関数です。

[code]

    int odd(int n){ return n & 0x1;}
    
[/code]

この関数のうちの”return n & 0x1;”の&の意味がわかりません。  
回答よろしくお願いします。


CC BY-SA 4.0
2018-08-06T14:35:58.237
47290
2018-08-06T14:48:38.453
2018-08-06T14:42:09.333
19110
29614
question
c++
"return n & 0x1"の&の意味を教えてください。


この `&` はビット演算の演算子であり、ビットごとの AND (論理積) を計算します。`&&` とは別の演算子です。

整数 `n` を 2 進数として扱う場合、一番下の桁が 0 ならば `n` は偶数であり、1 ならば奇数です。今回のコードはこのことを `&`
を使って計算しています。

具体例を使って考えてみます。たとえば `n = 7` のとき、これは 2 進数としては `0111` となり、`0111 & 0001` は `0001`
になります。結果が `1` なので、真偽値として扱うと真を意味します。別の例として `n = 10` のときを考えてみます。こちらは 2 進数では
`1010` となり、`1010 & 0001` は `0000` になります。結果が `0` なので、真偽値として扱うと偽を意味します。


CC BY-SA 4.0
2018-08-06T14:48:38.453
47291
2018-08-06T14:48:38.453
19110
47290
answer