Всё достаточно просто.
Сперва создается маска из нулей и ведущей единицы mask.
Дальше единица сдвигается в цикле по этой маске и выполняется логическая операция and с аргументом функции.
если результатом логической операции является 0 - то для текущей позиции единицы в маске у аргумента на той же позиции стоит 0, если отличное от ноля значение - единица. В соответствии с этим они и выводятся на экран.
spacer - это просто способ разделять выводимые биты в группы по 8 при помощи пробела.