C/C++ は、1 ビットが設定されているかどうかをチェックします。つまり、int 変数です。

C では、ビット操作を隠したい場合は、マクロを記述できます:

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

この方法で n th をチェックします 右端からのビット:

CHECK_BIT(temp, n - 1)

C++ では、std::bitset を使用できます。


ビット N (0 から開始) が設定されているかどうかを確認します:

temp & (1 << N)

このための組み込み関数はありません。


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