flip: инвертировать биты(обратный код)

Прототип функции-члена 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 генерирует ошибку. Сообщение об ошибке будет похоже на это:

terminate called after throwing an instance of ‘std::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;
}

Пример работы программы

CppStudio.com
Начальная битовая маска: 00010001
Инвертировать 1-й бит: 00010000
Обратный код: 11101111
Автор: Marienko L.
Дата: 04.02.2013
Поделиться:

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.