Код генерации подмножества, использующий двоичное представление слов и манипулирование битами, объяснение - PullRequest
0 голосов
/ 04 марта 2019

Может кто-нибудь помочь мне понять этот код генерации подмножеств с использованием битовых манипуляций в 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)
    )

У меня есть базовое понимание битовых манипуляций, таких как битовое смещение, но как мы отображаем биты в двоичном числев строку слова и наоборот, как я полагаю, здесь используется.

...