我有一个程序,它与遗传算法一起工作,并生成一个8位二进制字符串(染色体由8个基因组成)。
我想知道如何更改 / 翻转第一个基因/位。
例如:
Original chromosome:
01010101
Changed chromosome:
11010101 //First bit has been changed
如果第一位的值为1
,我想'翻转'使其成为0
;而且,显然,如果数组/染色体中的第一位是0
,我想将其“翻转”为1
。
谢谢。
答案 0 :(得分:5)
您可以使用以下内容:
chromosome ^= 0x80;
xor-assignment(^=
)翻转右侧表达式中设置的chromosome
位,0x80
为二进制10000000
。
更一般地说,要翻转k
- 位(最低有效位为位0):
chromosome ^= (1 << k);