Да бит.
У нас есть массив бит. Каждому биту присвоен порядковый номер. Если бит стоит, то он означает что число равное порядковому номеру бита есть в множестве.
Если бит сброшен, то такого числа нет в множестве. Вот проверяем бит и если он 0 то увеличиваем.
Цитата:
а mask[bit] как может быть равен 0.
А мы не его проверяем, а бит из b[byte].
8 битами мы можем закодировать множество из 8 чисел {0,1,2,3,4,5,6,7}.
0 1 2 3 4 5 6 7 - числа
0 0 0 0 0 0 0 0 {} - пустое множество
1 0 0 0 0 0 0 0 {0}
1 0 1 0 0 0 0 0 {0,2}
0 1 0 1 0 0 0 0 {1,3}
1 1 1 1 0 0 0 0 {0,1,2,3}
А так как в байте 8 бит то. Одним байтом можно закодировать множество из 8 чисел.
4096 байт соответственно кодируют множесто из 4096*8 чисел.