質問: 10101011 上記のように読み込み、読み込んだbitは0010001010となって、 これを10進数に変換したいです。いろいろ考えましたが、いまいちやり方がわかりません。 どなたか、ご助力のほど宜しくお願いします。
回答: 質問文の読み方が悪いのかビット列のどこを取っても0010001010という並びが出てこないのでビット列の前後をどう解釈するのかなど細かい仕様が読み取れないのですが、総論で。 問題を3段階に分けると易しくなります。 ・配列からi番目のビットを取り出す ・ビット並びを数値とする ・数値を十進化する こうですね。 最初の課題は、上に書いた通りで、何を持ってi番目とするのか、の仕様を質問者様しか把握していないことなので、これはお任せします。 int bit_at(int i); という形式の関数かマクロにしたことにしましょう。 2番目の課題です。 こうなりますね。 ``` int result = 0; for(int i = 0; i < bitLen; ++i) { result |= (bit_at(i + bitPosition) << i); // もしくは、こういう意図ですかね? // result |= (bit_at(i + bitPosition) << (bitLen - i - 1); } ``` 最後に、十進化するのはおなじみpritfです。 ``` printf("%d\n", result); ```