1
對於GA需要兩種方法:尋找快速的方法來轉換布爾[]以格雷碼至BigInteger和反之亦然的Java
BigInteger greyToBigInteger(boolean[]){...}
和
boolean[] bigIntegerToGrey(BigInteger){...}
例如:
15 ---> {true,false,false,false}
and
{true,false,false,false} --> 15
我不知道,如何讓這非常快。要轉換的最大數量是10^1125,所以對於一個數字,它的工作時間超過5分鐘,如果我這樣做的話,就像維基百科的例子。
如果能結合每4個布爾在一起,你可以做一個簡短的查找表,生成一個十六進制數字爲每4布爾組合。現在只需將十六進制數字添加到字符串構建器中,並從生成的十六進制字符串中生成BigInteger。十六進制到BigInteger轉換是IME,速度非常快。 –
@RudyVelthuis我找到一些方法來轉換BigInteger(灰色)<--> BigInteger(二進制)。我可以使用它們,但我需要首先轉換boolean [] <--> BigInteger,但我不確定它可以工作多快。 – Legion
只收集16個布爾值,將它們轉換爲16位整數,將BigInteger(Gray)左移16,並添加16位整數。重複,直到完成。然後,您只需調用BigInteger(灰色) - > BigInteger(二進制)代碼即可!你知道如何將16個布爾變量(實際上是16位)轉換爲一個16位的整數,對嗎?或者如何將16位int轉換爲16位布爾值? –