if(i&~077)
Что это значит?
i это int.
Речь идёт, о 6-битовых неотрицательных целых.
Вот полный пример класса.
class Tiny {
char v;
void assign(int i) {if(i&~077)throw Bad_range(); v=i} //!!!
public:
class Dad_range{};
Tiny(int i) {assing(i); return *this;}
operator int() const {return v;}
};
Пример из книги Бьерн Страуструпа "Язык программирования С++ спец издание" стр. 323 Операторы преобразования.
if(i&~077) Что это значит? (Синтаксис языка)
Модератор: Модераторы разделов
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: if(i&~077) Что это значит?
~077 это побитовая инверсия. 077 в двоичном виде 00...000111111, ~077 это 11...111000000, соответственно i & ~077 обнуляет нижние 6 битов у i. Поэтому условие (i & ~077) справедливо тогда, когда у i имеюся ненулевые биты выше 6-го. В данном случае это эквивалентно условию (i < 0 || i > 128)