VCではなく、C/C++の話になってしまうと思いますが、
質問させてください。
ある値の2の指数を求めるにはどうすればいいのでしょうか?
例
入力:出力
1:0
2:1
4:2
8:3
16:4
32:5
…
と、ある値から2^xの「x」の値を求めたいのです。
※「^」はビット排他的論理和(XOR)ではありません。
何かいい方法をご存じでしたらご教授お願います。
-1 とか 0 とか 3 とか 5 6 7 とかに対してどんな値が出ればいいの?
浮動小数点数演算してよいなら log2(x)
log2(x) がない処理系なら log(x) の底の変換公式から求めればいい。
対象数値を2進数で表現したとき、1の立っている
最下位ビットからの位置(インデックス)が指数部になります。
どのビットも立っていなかったら指数は0です。
仲澤様の方法で実現することが出来ました。
アドバイス頂きありがとうございました。
どのビットも立っていなかったら指数は0ではなくて未定義だけどね
>どのビットも立っていなかったら指数は0ではなくて未定義だけどね
その通りですね。間違えてしまいました・・・orz。
ツイート | ![]() |