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.
谢谢.
您可以使用以下内容:
chromosome ^= 0x80;
Run Code Online (Sandbox Code Playgroud)
xor-assignment(^=)翻转chromosome在右侧表达式中设置的位,并且0x80是10000000二进制的.
更一般地说,要翻转k第-位(最低有效位为第0位):
chromosome ^= (1 << k);
Run Code Online (Sandbox Code Playgroud)