Conditions
前提レベル
このレベルを前提とするレベル
概要
「値」と「条件を選択する3ビット」が入力されるので、 「値」が「条件」を満たす場合はON、 満たさない場合はOFFを出力する回路を構築する問題です。
ビットと条件の対応は以下のものです。
ビット3 | ビット2 | ビット1 | 条件 |
---|---|---|---|
OFF | OFF | OFF | 常に偽 |
OFF | OFF | ON | 値 = 0 |
OFF | ON | OFF | 値 < 0 |
OFF | ON | ON | 値 ≦ 0 |
ON | OFF | OFF | 常に真 |
ON | OFF | ON | 値 ≠ 0 |
ON | ON | OFF | 値 ≧ 0 |
ON | ON | ON | 値 > 0 |
攻略
ビットと条件の関係をよく見て、それに沿って回路を構成します。
解答
まず、ビット3がOFFの場合を考えると、以下のことがわかります。
- ビット1がON、かつ値 = 0 のとき、出力はONになる。
- ビット2がON、かつ値 < 0 のとき、出力はONになる。
- これらの条件に当てはまらないとき、出力はOFFになる。
さらに、ビット3がONの場合は、 ビット3がOFFの場合の条件の反転になっていることがわかります。
したがって、この場合はビット3がOFFの場合の出力を反転させればいいです。
値 = 0 かどうかの判定は、値の全ビットがOFFになっているかをチェックすればよいです。
すなわち、値の全ビットをORした結果がOFFになっているかをチェックすればよいです。
値 < 0 かどうかの判定は、値の最上位ビットがONになっているかをチェックすればよいです。