Побитовые операторы должны перемещать переменные и работать по ним по частям. В случае целых чисел, longs, chars это имеет смысл. Эти переменные могут содержать полный диапазон значений, обеспечиваемых их размером.
В случае с булевыми элементами, однако, булев может содержать только два значения. 1 = true или 0 = false. Но размер булева не определен. Он может быть как байтом, так и небольшим.
Итак, каков эффект использования побитового оператора на булевом? Разве JVM существенно переводит его в обычный логический оператор и движется дальше? Обрабатывает ли он логическое значение как единичный бит для целей операции? Или результат undefined вместе с размером булевых?