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

时间:2011-10-07 13:57:34

标签: java genetic-algorithm

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

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

例如:

Original chromosome:
01010101

Changed chromosome:
11010101 //First bit has been changed

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

谢谢。

1 个答案:

答案 0 :(得分:5)

您可以使用以下内容:

chromosome ^= 0x80;

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

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

chromosome ^= (1 << k);