C/C++ check if one bit is set in, i.e. int variable C/C++ check if one bit is set in, i.e. int variable c c

C/C++ check if one bit is set in, i.e. int variable


In C, if you want to hide bit manipulation, you can write a macro:

#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))

and use it this way to check the nth bit from the right end:

CHECK_BIT(temp, n - 1)

In C++, you can use std::bitset.


Check if bit N (starting from 0) is set:

temp & (1 << N)

There is no builtin function for this.


I would just use a std::bitset if it's C++. Simple. Straight-forward. No chance for stupid errors.

typedef std::bitset<sizeof(int)> IntBits;bool is_set = IntBits(value).test(position);

or how about this silliness

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);