1

これが重複している場合は申し訳ありません。必要なものを正確に見つけることができませんでした。

私はバイトの現在の値を持っています:

00110001 あ

そして、別の値を書かなければなりません:

10001001B

ただし、2 番目のバイトでは、一部のビットのみが関連しています。関連するビットは、このビットに 1 があるビットです。

11000000C

最終バイトは、C==1 のビットでは B になり、C==0 のビットでは A になります。ifステートメントなしでどうすればそれを行うことができますか?

答えは D 10110001

4

2 に答える 2

7

マスクして組み合わせる:

finalByte = (B & C) | (A & ~C);

それがどのように機能するかを分解するには - の結果は、 のビットが設定されている場所B & Cのすべてのビットを含むバイトです(通常のマスキング操作)。 のすべてのビットがクリアされたバイトを生成します。したがって、補数演算です。は、2 つを探している最終バイトに結合します。BCA & ~CAC~|

于 2013-07-16T14:27:06.467 に答える
5
(B & C) | (A & ~C)

最初の式は、設定されBている場所のビットのみを保持します。2番目は、設定されていない場所Cのビットのみを保持します。論理 or はこれら 2 つのビットセットを組み合わせて、必要な結果を生成します。AC

于 2013-07-16T14:28:43.170 に答える