2017年3月25日土曜日

値を表すのに必用な桁数

 値を表すのに必用な桁数はlog関数で求めることができる。C言語のmath.hではいくつかのlog関数が用意されており、logなら自然対数、log10なら10、log2なら2を底とした冪指数を得ることができる。たぶん無指定なら10だろ~とか思ってlogを使うと違う結果になるので注意すること。任意の底を使いたい場合はlog10(value) / log10(base)のような計算になる。
 10進数「10」を2進数で表すのに必用な桁数は、ceil(log2(10))のようになる(ceilは天井関数)。この結果は4となり、2^4=16だから、実際に10を含むことができる。ただしこれは正数のみを考えた場合であり、2進数では上位1bitで符号を表すから、負数も扱うなら5bitが必要となる。
 10進数の場合でも同様の手順で桁数を計算することができる。「わざわざ計算しなくても、自分で考えればいいじゃないか」という人もいるかもしれないが、CPUに対して「この変数を表示するには何桁の表示領域が必用なんだい?」なんて聞くコマンドは(おそらく)実装されていないから、計算するプログラムを組む必要がある。


 ほんとうは、FIR(有限インパルス応答)を正数で計算するあたりの事を書こうと思っていたんだが、頭がまわらないので次の機会に。
 1週間ほど前はいい感じの生活サイクルだったんだけど、また夜型のリズムになってしまった。なかなか位相ロックが行えない。位相ロックループはちゃんとロックできるイベントがないとダメなんだなぁと変なところで実感したり、イベントがないとロックループじゃないだろ、とも思ったり。なんかテンションがおかしいぞ。早く寝よう。。

0 件のコメント:

コメントを投稿