Спасибо за ответ, Керрек!

ня я начал читать «Программирование жемчуга» и, выполняя это упражнение, натолкнулся на вопрос «Как бы вы реализовали свой собственный битовый вектор?». Когда я посмотрел на решение, это было так:

#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000

int a[1 + N/BITSPERWORD]; 

void set(int i) { a[i >> SHIFT] |= (1 << (i & MASK)); 

Где я запутался в этом утверждении

 1 << (i & MASK)

Может кто-нибудь объяснить мне, что здесь происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос