Mess4me, побитовые операторы лучше использовать там, где они действительно нужны, например при работе с бинарными данными. В данном случае лучше использовать деление по модулю, так как это более правильный подход, нежели использование побитовых операций не по назначению.
Вот пару примеров, как делать не нужно:
~str.indexOf('str')
foo ^= 1
А ниже
правильные аналоги:
str.indexOf('str') != -1 или indexOf('str') + 1
foo = !foo