什么是清除和设置用于的位以及为什么它有用?

时间:2015-02-09 19:06:10

标签: c++

    if (mode) 
        CLRBITS(field->flag, UFMODE_GREY);
    else 
        SETBITS(field->flag, UFMODE_GREY);

CLRBITSSETBITS只是设置为使用适当的按位运算清除和设置位的宏。 UFMODE_GREY也是一个等同于0x0200的宏。

1 个答案:

答案 0 :(得分:1)

位用于将一组布尔标志压缩到较小的空间中。在C和C ++中,您引用的样式通常用于针对多个编译器和系统的API,这些编译器和系统可能选择以不同方式打包具有布尔标志的结构。 CLRBITS和SETBITS宏用于提供更清晰的声明。这比下面的内容要简单得多:

if( mode ){
  field->flag = field->flag & ~0x200;
}else {
  field->flag = field->flag | 0x200;
}