0

私は今パズルに取り組んでいます.... if (x==5 || x==7) ビットごとの操作で(Cで)書き込もうとしています。しばらく取り組んでいます....それを理解することはできません。

どんな助けでも大歓迎です!ありがとう

Ps これは宿題ではありません...テストのために勉強しようとしています。

編集して、フォーマットが if (x _ _)空白のビットごとの操作のようなものになるようにします

申し訳ありませんが、指定する必要があります。2 文字 (演算子または数値) のみを指定できます。%8たとえば、

4

2 に答える 2

1

7d = 111b および 5d = 101b

したがって、ビット 0 はオン、ビット 1 は無視、ビット 2 はオン、ビット 3 ~ 31 はオフでなければなりません。したがって、ビット 1 をマスクして 101b をテストします。

したがって、テストは ((x & ~2) == 5) になります

次に、「Karnaugh Maps」について Bing またはウィキペディアに問い合わせて、独自の表現削減を行うことができます。

以下のトムの答えも正しく、より簡単です。あなたは書くことができます

((x & 5) == 5)

これはわずかに高速です。おそらく、カルノー マップを使用する必要がありました。

于 2012-10-31T03:56:41.277 に答える
-1

'101'でANDすると、5と7の両方で同じ結果(101)が得られます。

于 2012-10-31T04:02:22.567 に答える