Изменить значение первого бита в двоичной строке - Java - PullRequest
1 голос
/ 07 октября 2011

У меня есть программа, которая работает с генетическими алгоритмами и генерирует 8-битную двоичную строку (хромосома, состоящая из восьми генов).

Я хотел бы знать, как мне поступить с изменением / переключением первого гена / бита.

Например:

Original chromosome:
01010101

Changed chromosome:
11010101 //First bit has been changed

Если первый бит имеет значение 1, я хотел бы «перевернуть» его, чтобы сделать его 0; и, очевидно, если первый бит в массиве / хромосоме равен 0, я бы хотел перевернуть его на 1.

Спасибо.

1 Ответ

5 голосов
/ 07 октября 2011

Вы можете использовать следующее:

chromosome ^= 0x80;

Присвоение xor (^=) переворачивает биты chromosome, которые установлены в выражении с правой стороны, а 0x80 равно 10000000 в двоичном формате.

В общем случае, чтобы перевернуть k -й бит (с младшим битом, равным 0):

chromosome ^= (1 << k);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...