Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Работа с полями битов


Автор: BBulat 14.12.2006, 09:11
Мне нужно инвертировать один конкретный бит в слове, не используя при этом поразрядные операции (и, или). Читал, что битовое поле может быть элементом структуры, но как изменить нужный бит в конкретном слове так и не понял. Возможно ли все это осущ. примерно так
reg.4=~reg.4
т.е 4-му биту слова reg присвоить его инверсное значение?
Заранее благодарен. 

Автор: Earnest 14.12.2006, 09:38
Код

struct _bits
{
   bool zero: 1;
   bool one: 1;
   bool two: 1;
   // etc
};

_bits bits;
bits.one = !bits.one;


Еще можно использовать std::bitset - доволно удобная штука.

Но без поразрядных операций ни в том, ни в другом случае не обойдется: в твоем коде их не будет, но реализация-то в любом случае с битами работает через поразрядные операции. 

Автор: BBulat 14.12.2006, 09:54
Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)