我有一个程序,可以与遗传算法配合使用,并生成一个8位二进制字符串(由八个基因组成的染色体)。

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

例如:

Original chromosome:
01010101

Changed chromosome:
11010101 //First bit has been changed


如果第一位的值为1,我想对其进行“翻转”使其成为0;并且,显然,如果数组/染色体的第一位是0,我想将其“翻转”到1

谢谢。

最佳答案

您可以使用以下内容:

chromosome ^= 0x80;


xor-assignment(^=)翻转右侧表达式中设置的chromosome位,而0x80是二进制形式的10000000

更一般而言,要翻转第k位(最低有效位为位0):

chromosome ^= (1 << k);

关于java - 更改二进制字符串中第一位的值-Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7688286/

10-10 01:09