Крест -над двумя целыми числами поразрядно

В настоящее время я пытаюсь реализовать очень простой пример генетических алгоритмов.

В какой-то момент вам нужно выполнить «Перекрестный -Овер» (биологию )с двумя числами (родители ), чтобы получить «ребенка».

Вы можете найти объяснение Креста -здесь:

Как «скрестить» две строки (1234 и abcd -> 12cd и ab34)

(Второй пример, более простой «один -пункт» Cross -Over — это то, что я пытаюсь сделать.)

Хромосомы (родителей и дочерних )являются числами, но "Перекрестить -Над" будет битовой операцией.

Я нашел решение для одной из «хромосом», которое выглядит следующим образом:

  • Переместите количество битов X вправо(>>>оператор)
  • а затем снова переместите биты на X позиций, но на этот раз влево(<<оператор)

Так что это сохранит конец одной из хромосом и заполнит начало нулями.

Но я действительно не знаю, как решить проблему другой хромосомы, а затем еще и -Перекреститься.

(Вероятно, XOR, когда я сохранил начало/конец хромосом, а остальные заполнил нулями.)

Или мне стоит подойти к этой проблеме с другой стороны?

7
задан Community 23 May 2017 в 11:52
поделиться