2011-10-07 36 views
1

我有一個程序可以與遺傳算法一起工作,並生成一個8位二進制字符串(由8個基因組成的染色體)。更改二進制字符串中第一位的值 - Java

我想知道如何去更改/翻轉第一個基因/位。

例如:

Original chromosome: 
01010101 

Changed chromosome: 
11010101 //First bit has been changed 

如果第一位有1值,我想「倒裝」它,使之成爲0;顯然,如果陣列/染色體中的第一位是0,我想'翻轉'到1

謝謝。

+2

你的斷言「的8位二進制字符串」是誤導性的。你將這些數據存儲在int,short還是String中? – Perception

+0

數據存儲在一個'int'中。 – MusTheDataGuy

回答

5

你可以使用以下:

chromosome ^= 0x80; 

異或分配(^=)翻轉了在右手側表達式設置chromosome比特,並且0x80是二進制10000000

更一般地,以翻轉k第位(與至少顯著位爲比特0):

chromosome ^= (1 << k); 
相關問題