Get an array of the bit positions within a 64-bit integer

前端 未结 8 1406
囚心锁ツ
囚心锁ツ 2020-12-30 06:07

OK, it may sound a bit complicated, but this is what I\'m trying to do :

  • Take e.g. 10101010101
  • And return { 0, 2, 4, 6, 8, 10 }
8条回答
  •  春和景丽
    2020-12-30 06:51

    const size_t size = sizeof(U64)*8;
    U64 val = 1;
    
    vector res;
    res.reserve(size);
    
    for ( size_t i = size; i > 0; --i ) {
      if ( ( val & bitboard ) != 0 ) {
        res.push_back(i);
      }
      val <<= 1;
    }
    

提交回复
热议问题