3 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
在C语言中,如果要隐藏位操作,可以编写一个宏:
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
并以此方式检查右端的第 n 位:
CHECK_BIT(temp, n - 1)
在C ++中,可以使用std :: bitset。
紫衣仙女
TA贡献1839条经验 获得超15个赞
如果是C ++,我只会使用std :: bitset。简单。直截了当。没有机会犯下愚蠢的错误。
typedef std::bitset<sizeof(int)> IntBits;
bool is_set = IntBits(value).test(position);
还是这么愚蠢
template<unsigned int Exp>
struct pow_2 {
static const unsigned int value = 2 * pow_2<Exp-1>::value;
};
template<>
struct pow_2<0> {
static const unsigned int value = 1;
};
template<unsigned int Pos>
bool is_bit_set(unsigned int value)
{
return (value & pow_2<Pos>::value) != 0;
}
bool result = is_bit_set<2>(value);
- 3 回答
- 0 关注
- 673 浏览
添加回答
举报
0/150
提交
取消