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

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

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

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

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

Verify exponent【NandGame編】

はじめに

いつもブログをご覧いただきありがとうございます。

FIRE生活中のIPUSIRONです😀

IPUSIRONのプロフィールを見る

Verify exponentレベル

Verify exponentレベルのゴールは、指数(exp)が0~30(16進数で00h~1Eh)の範囲外のとき、31(=1Fh=1 1111b)に設定する回路を組むことです。

Verify exponentレベルを解く

[1]入力のexpが00h~1Eh(0000 0000b~0001 1110b)の範囲内であれば、そのままexpに出力します。

[2]入力のexpが1Fh(=0001 1111b)であれば、範囲外なので1Fhを出力します。

※よく見ると入出力が一致しており、そのまま出力すると解釈しても問題になりません。

[3]入力のexpが00h~1Eh(0000 0000b~0001 1110b)の範囲外、すなわち0020h~ffffh(0000 0000 0010 0000b~1111 1111 1111 1111b)[1]16ビット幅であることを考慮しています。であれば、1Fhを出力します。

これらの場合分けをどうやって回路上で実現するかです。

今回はうまい具合に[2]は[1]に吸収できます。

さらに、[3]は16ビットをxxxx xxxx xxxy yyyybと考えたとき、上位11ビット(xの位置)のどこかに1つでも1があれば、00h~1Eh(0000 0000b~0001 1110b)の範囲外であることが確定します。

splitterコンポーネントでexpを各桁で分離します。上位11ビットを取り出したら、bundlerコンポーネントで束ねて16ビット値にします。その後is zeroコンポーネントに入力します。is zeroコンポーネントは0が入力されれば1を出力します。つまり、上位11ビットに1が1つでも存在すれば、上位11ビットから作った16ビット値はゼロではないので、is zeroコンポーネントは0を出力するわけです。

以上を踏まえて、回路を実装すると次のようになります。

References

References
1 16ビット幅であることを考慮しています。