Simulinkで 10進数→2進数変換

今回のものはかなりネタ的なものです。あまりマジでツっこまれても困ります。

最近、10進数から2進数への変換(逆も)が必要になりました。

Communications Toolboxにそのものズバりなブロック(Integer to Bit Converter)があるのですが、この一つのブロックのためだけにToolboxを使うのもなーなんて考えて作ってみたものです。

Simulink上で2進数はベクトルで表現します。上位ビットのindexが1とちょっとこんがらがりますが、見た目的には分かりやすいかも。

考え方は以下の通りです:

まず、もとの数を2で割った剰余が最下位ビットになります。商の2の剰余が次のビットになります。これを繰り返すだけです。

今回欲しかったのは最大8ビットだったので、まあループを使うまでもなくベタ書きしました。かなりダサいです。 ループを使う場合はメモリーブロックなどで一回前のループでの値を覚えておく必要があります。

poorDec2Bin_8bit.slx

参考: Simulink上で​、10進数の信号を2​進数のビット列として​変換するにはどうすれ​ばよいですか?

逆もダサく書きました。

各ビットと2のn乗とのかけ算を足すだけです。

poorBin2Dec_8bit.slx