質問: こちらを一つずつ、10進数で表したいのですが、ぜんぜんわかりません。 わかる方教えていただきたいです。 ``` 15 & 7 6 & 4 9 OR 3 5 OR 10 ```
回答: 問題の`9 OR 3`は`9 | 3`の10進数表現を求めているのだと考えました。 ※ C言語のORのビット演算は`|`、ANDのビット演算は`&`です。 考え方は、数値を2進数に基数変換し、1ビットずつ&(AND)や|(OR)のビット演算を行ったあと、結果を10進数に基数変換すればよいと思います。 答えを知りたいだけなら以下のようにprintfでビット演算結果を表示してみればよいと思います。 ``` printf("%d\n", 15&7); ``` 【追記しました】 C言語の論理演算の演算子はANDが`&&`、ORが`||`です。 C言語は整数を真偽値として扱うことができます。 整数0の真偽値は偽、0以外の整数は真です。評価するときは1でも2でも真ですが、演算結果は1になります。 2つの整数のうちひとつでも0(偽)ならば論理演算AND(`&&`)の結果は0(偽)で、両方とも0以外のときに結果は1(真)となります。 整数が両方とも0(偽)ならば論理演算OR(`||`)の結果は0(偽)で、ひとつでも0以外のときに結果は真(1)となります。 ビット演算は1ビットずつの論理演算と考えればよいと思います。 質問に「10進数で表したい」とありましたので勝手にビット演算と考えて回答しましたが、 「論理演算」と「ビット演算」の違いを理解しておいた方がよいと思い、回答に追記しました。