我有一个程序,可以与遗传算法配合使用,并生成一个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/