(a & (1U << b)) > 0
возвращает 1, если проверка прошла, и 0, если нет.Этот результат - то, что напечатано cout
.&
выполняет побитовую операцию с двумя целыми числами, а 1U << b
выполняет сдвиг влево 1
на b
бит (U
просто указывает компилятору обрабатывать значение как беззнаковое).