Это не побитовое сравнение .Он не возвращает логическое значение.
Битовые операторы используются для чтения и изменения отдельных битов числа.
n & 0x8 // Peek at bit3
n |= 0x8 // Set bit3
n &= ~0x8 // Clear bit3
n ^= 0x8 // Toggle bit3
Биты используются для экономии места.8 символов занимают намного больше памяти, чем 8 битов в символе.
В следующем примере показано получение диапазона IP-подсети с использованием IP-адреса подсети и маски подсети подсети.
uint32_t mask = (((255 << 8) | 255) << 8) | 255) << 8) | 255;
uint32_t ip = (((192 << 8) | 168) << 8) | 3) << 8) | 4;
uint32_t first = ip & mask;
uint32_t last = ip | ~mask;