在C中设置变量中特定位的最佳方法是什么

vip*_*pin 5 c

考虑unsigned int a;C中的变量.

现在说我想将此变量中的任何第i位设置为"1".

请注意,变量有一些值.所以a=(1<<i)不行.

a=a+(1<<i)会工作,但我正在寻找最快的方式.什么?

mkb*_*mkb 11

按位或它.例如a |= (1<<i)


Bra*_*lor 8

一些有用的位操作宏

#define BIT_MASK(bit)             (1 << (bit))
#define SET_BIT(value,bit)        ((value) |= BIT_MASK(bit))
#define CLEAR_BIT(value,bit)      ((value) &= ~BIT_MASK(bit))
#define TEST_BIT(value,bit)       (((value) & BIT_MASK(bit)) ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)