二进制字符串中第一位的更改值 - Java

Mus*_*Guy 1 java genetic-algorithm

我有一个程序,它与遗传算法一起工作,并生成一个8位二进制字符串(染色体由8个基因组成).

我想知道如何改变/翻转第一个基因/位.

例如:

Original chromosome:
01010101

Changed chromosome:
11010101 //First bit has been changed
Run Code Online (Sandbox Code Playgroud)

如果第一位的值为1,我想'翻转'使其成为a 0; 并且,显然,如果数组/染色体中的第一位是a 0,我想将其"翻转"为a 1.

谢谢.

NPE*_*NPE 5

您可以使用以下内容:

chromosome ^= 0x80;
Run Code Online (Sandbox Code Playgroud)

xor-assignment(^=)翻转chromosome在右侧表达式中设置的位,并且0x8010000000二进制的.

更一般地说,要翻转k第-位(最低有效位为第0位):

chromosome ^= (1 << k);
Run Code Online (Sandbox Code Playgroud)