0,1が格納されているunsigned char配列をbit列に直したい
フラグの管理用に0, 1が格納されているunsigned char配列hogeがあるとして、この配列を元に「いづれかのフラグがたったらtrueを返す」様な関数をbit演算を駆使して作りたいと考えています。(bitを駆使したフラグ管理練習用なので「別にbit使わなくても...」は無しでお願いいたします)
そこで、以下の様な関数を作成してみました。
bool IsAnyFlag() const
{
unsigned int flags = 0;
for (int i = 0; i < NUM; i++)
{
flags |= hoge[i] << i;
}
return flags != 0;
}
しかしこれでは、一応正常に動きはしますが「for文内で1だったら速攻true返せば早くね?」という話になってしまい、bitに直している意味が無いように感じてしまいます。
では、unsigned char配列を一括でbit列に直せる方法があれば良いのではとも考えましたが、そのような方法は私が調べた限りでは無いようで頓挫しています。
あいまいな言葉で申し訳ないのですが、もっとスマートな方法はありませんでしょうか。
よろしくお願いいたします。
余談ですがchar型が文字専用型ではないというのを最近知り「え!? ちがうのぉ!?」と驚愕しております。