現在、数値xを表すために必要なビット数を決定するアルゴリズムを作成しようとしています。私の実装はcです。 しかし、いくつかのキャッチがありますが、ビット演算子{〜、&、^、|、+、< <、>>}に制限されています。また、どのようなタイプの制御フロー(if、while、for)も使用できません。 私の最初のアプローチは、左から右へバイナリで数値を調べ、最初の '1'の出現箇所を探します。私はこれにどのように取り組んでいるのかわからない。 私が扱っている番号は、符号なし整数と考えることができます。したがって、00110は3ビットしか必要としない。数字を表すために必要なビット数x
これを行うにはもっと簡単で清潔な方法があるのでしょうか?私はそれを逃していますか? 誰かが何かヒントを与えることができますか?
基本的に、私は、whileループせずにこれを実装しようとしていた。
int result = 0;
while (x >>= 1) {
result += 1;
}
return result;
ですか? –
数値は整数か浮動小数点ですか?最大値と最小値は何ですか?署名付きまたは署名なし? –
@AbhijeetRastogi:はい、それはコンピュータアーキテクチャのコースで解決している最後の "パズル"の1つです。私はこのようなビット操作を含むすべてのタイプの問題を抱えています。私は現在、方法の約80%です。これは私が実際に始められないような最後の問題の1つです。 –