位操作——bitset 对象或整型值
假设我们要存储一个30位的数据,用bitset可以简单表示为
bitset<30> bitset_quiz1;
用整型值则只能这样表示:
unsigned long int_quiz1 = 0;
注意到这种数据类型在所有机器上都至少拥有 32 位的长度。
下面,假设要设置第27位为1,分别可以这么做:
bitset_quiz1.set(27);
int_quiz1 |= 1UL<<27;
如果使用 bitset 实现,可直接传递要置位的位给 set 函数。而用unsigned long 实现时,实现的方法则比较复杂。1UL表示无符号长整形1,然后1ul<<27表示左移27位,所以是第27位为1,其余为0。
如果有要设置第27位为0,则
bitset_quiz1.reset(27);
int_quiz1 &= ~(1UL<<27);
最后,如果要测试第