当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題のある表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

Left Shift、Logical Right Shift、Artithmetic Right Shift、Barrel Shift Left【NandGame編】

Left Shiftレベル

Left Shiftレベルのゴールは1ビット左シフトする回路を組むことです。

実質的に入力値を2倍する回路になります。

Left Shiftレベルを解く

入力である16ビット値をsplitterコンポーネントに桁ごとに分離します。出力側にはbundlerコンポーネントをつなげます。

入力の各桁を1つだけ左に移します。

ただし、入力値の最上位ビットは左シフトした結果、範囲外になるので切り捨てます。

Logical Right Shiftレベル

Logical Right Shiftレベルのゴールは、算術右シフトの回路を組むことです。

入力の最下位ビットは切り捨てます。そして、出力の最上位ビットは0になります。

実質的に2で割る回路になります。

Logical Right Shiftレベルを解く

Artithmetic Right Shiftレベル

Artithmetic Right Shiftレベルのゴールは、算術右シフトの回路を組むことです。

入力の最下位ビットは切り捨てます。そして、出力の最上位ビットは入力の最上位ビットと同一とします。

Artithmetic Right Shiftレベルを解く

Barrel Shift Leftレベル

Barrel Shift Leftレベルのゴールは、指定した分だけ左シフトする回路を組むことです。

どれだけ左シフトするかは4ビットで指定します。

※4ビットあるので、0~15桁分のシフトを表現できます。

Barrel Shift Leftレベルを解く

当該レベルでは、左シフトする桁数はn(4ビット)で指定します。

nand、inv、orといった基本ロジックのコンポーネントに加えて、次に示すコンポーネントも用意されています。

inc 16コンポーネントは16ビット値をインクリメントします。

inc 16コンポーネント

shl 1コンポーネントは1ビット左シフトします。

shl 1コンポーネント

select 16コンポーネントは2つの入力値(16ビット)をsで切り替えるマルチプレクサーです。

select 16コンポーネント

これらを組み合わせて要求する回路を実現しなければなりません。少なくともshl 1コンポーネントが必須であることは自明でしょう。複数回左シフトする必要があれば、shl 1コンポーネントを直列につなげます。