Прототип функции-члена flip:
bitset<N>& flip ( ); bitset<N>& flip ( size_t pos );
Заголовочный файл | Класс-контейнер | Спецификатор доступа |
---|---|---|
<bitset> | bitset | public |
Описание
Функция-член flip
преобразует битовую маску в обратный код. То есть все 1-цы в битовой маске заменяет на 0, а все нули на 1. Версия flip
без параметров переворачивает все биты в битовой маске, т.е. меняет все 0-ли на 1-цы и все 1-цы на 0-ли.
Параметризованная версия flip
или функция flip
с параметром, инвертирует только один бит, позиция которого передается через параметр pos
.
Примечательно, что унарный унарный оператор ~
выполняет туже операцию, что и функция-член flip
.
Параметры:
- pos
Позиция бита, значение которого необходимо изменить на противоположное. Индекс первого бита равен 0, причем первым битом считается крайний правый бит.size_t
— целочисленный беззнаковый тип данных.
Возвращаемое значение
Указатель на битовую маску (объект типа bitset
). Если значение параметра pos будет некорректное, то класс out_of_range генерирует ошибку. Сообщение об ошибке будет похоже на это:
what(): bitset::flip
В зависимости от используемого компилятора, текст ошибки может незначительно отличаться.
Пример: исходный код программы
// функция flip():инвертирование битов #include <iostream> #include <string> // для преобразования строки к типу string #include <bitset> // заголовочный файл класса-контейнера bitset using namespace std; int main () { bitset<8> bits (string("00010001")); cout << "Начальная битовая маска: " << bits << endl; cout << "Инвертировать 1-й бит: " << bits.flip(0) << endl; // 00010000 cout << "Обратный код: " << bits.flip() << endl; // 11101111 return 0; }
Пример работы программы
Начальная битовая маска: 00010001 Инвертировать 1-й бит: 00010000 Обратный код: 11101111