Left Shift、Logical Right Shift、Artithmetic Right Shift、Barrel Shift Left【NandGame編】
目次
はじめに
いつもブログをご覧いただきありがとうございます。
コーストFIRE中のIPUSIRONです😀
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ビット値をインクリメントします。
shl 1コンポーネントは1ビット左シフトします。
select 16コンポーネントは2つの入力値(16ビット)をsで切り替えるマルチプレクサーです。
これらを組み合わせて要求する回路を実現しなければなりません。少なくともshl 1コンポーネントが必須であることは自明でしょう。複数回左シフトする必要があれば、shl 1コンポーネントを直列につなげます。