Daily bit(e) C++. std::bitset

Добавлено 30 июля 2026 в 00:39

Daily bit(e) C++ 47, контейнер для хранения на битовом уровне: std::bitset.

Daily bit(e) C++

std::bitset – это контейнер со статическим размером для хранения битов.

Данный контейнер предлагает побитовый доступ, булевы операции редукции (all, any, none), побитовые операции (AND, OR, XOR, NOT) между контейнерами std::bitset одинакового размера, побитовые сдвиги и манипуляции с состоянием (установка, сброс, инверсия).

Начиная с C++23, std::bitset полностью constexpr.

#include <bitset>

std::bitset<16> data;

// нулевой индекс указывает на наименьший значащий бит
data[0] = 1;
// data.to_ullong() == 1

// установить все биты в 1
data.set();
// data.to_ullong() == 65535

// инвертировать все биты (установить их в 0)
data.flip();
// data.to_ullong() == 0

data[0] = 1;
data[2] = 1;
data[4] = 1;

std::bitset<16> other;
other[0] = 1;
other[2] = 1;

// побитовое И
data &= other;
// data.to_ullong() == 5

// any_of
bool test = data.any();
// test == true

// счетчик битов, равных 1
size_t cnt = data.count();
// cnt == 2

// поддерживает сравнение, но не упорядочивание
bool same = (data == other);
// same == true

Пример на Compiler Explorer

Теги

C++ / CppDaily bit(e) C++Программирование