vpadlo, отличная идея разобрать С++!
Давайте я расскажу про побитовые операторы.

Итак, числа хранятся в памяти в двоичной системе. К примеру, число 2007 типа unsigned short int (про типы можно подробнее поговорить позже) занимает в памяти 2 байта и имеет вид 0000011111010111, где каждый бит принимает значение 0 или 1.
Возьмём другое число, скажем, 4000, имеющее в двоичной системе вид 0000111110100000 и вычислим результаты побитовых операторов &, | и ^ между ними.

Использование побитового И:
[code]