Может кто-нибудь помочь мне понять этот код генерации подмножеств с использованием битовых манипуляций в scala
def powerSet[A](s: Seq[A]): Iterator[Iterator[A]] =
Iterator.range(0, 1 << s.length).map(i =>
Iterator.range(0, s.length).withFilter(j =>
(i >> j) % 2 == 1
).map(s)
)
У меня есть базовое понимание битовых манипуляций, таких как битовое смещение, но как мы отображаем биты в двоичном числев строку слова и наоборот, как я полагаю, здесь используется.