Как сказал Андрей, BitArray, вероятно, ваш лучший ответ, он отвечает всем вашим требованиям.
1) Вы можете установить количество битов с помощью конструктора
2), который позволяет вам устанавливать (вкл или выкл), Или, И, Xor, Не в битах
3) вы можете перебрать последние x%, чтобы сделать кроссовер
4) есть ToString, которая должна позволять вам выводить его.