次の方法でビットNを設定できることを知っています。
VALUE |= 1 << N;
または、次の方法でビット N をクリアします。
VALUE &= ~(1 << N);
しかし、ビット N を「書き込む」(セットまたはクリアしない) 最も効率的な方法は何ですか? たとえば、関数があります:
__inline void writeBit(char &value, int N, bool state)
{
if(state)
value |= 1 << N;
else
value &= ~(1 << N);
}
どうにかして if/else ステートメントを取り除き、代わりに二項演算子とシフト演算子のみを使用してこれを行うことはできますか?