#include <iostream>

enum class ColumnEnum {
  Column1=0, Column2, Column3, Column4, Column5, Column6, Column7
};

uint64_t map(uint64_t x, ColumnEnum c)
{
  x = (x >> (7 - static_cast<int>(c))) & 0x0101010101010101uLL;
  x = (x | (x >> 7)) &0x00FF00FF00FF00FFuLL;
  x = (x | (x >> 14))&0x000000FF000000FFuLL;
  x = (x | (x >> 28))&0x00000000000000FFuLL;
  return x << 56;
}


int main()
{
  uint64_t matrice = 0x4040400040400040uLL;
  uint64_t matrice_2 = map(matrice, ColumnEnum::Column2);
  std::cout << std::hex << matrice_2 << '\n';
}