我知道我可以通过以下方式设置位 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 语句,而只使用二进制和移位运算符来做到这一点?