строка уведомления int bit = key % INT_SIZE; // which is 5 % 32 according to your code
так что теперь bit = 5 // because 5 % 32 = 5
сейчас int bitMask = 1 << bit; // you're saying shit 1 to five bits to left
in 32 bits 1 = 000000000000000000000000000000000001
после нажатия 5 бит влево становится
000000000000000000000000000000000100000 = 32 //in binary that is why bitmask continas 32
Теперь поговорим о |=
операторе
|
- побитовом операторе ИЛИ, который вы просто используете в качестве составного присваивания
bitArr[ind] |= bitMask is similar to bitArr[ind] = bitArr[ind] | bitmask
, например, скажем bitArr[ind] equals 5 and bitmask equals 3
сейчас bitArr[ind] | bitmask
означает 5 | 3
он будет выполнять побитовое ИЛИ с двоичным представлением
означает 101 | 011
, который становится 111
, что составляет 7