Java:二进制序列表示

时间:2013-10-02 14:43:50

标签: java binary biginteger

我正在自己做一些关于量化过程等的实验。

我尝试实现二进制化过程,该过程产生一个“二进制字符串”,然后由xor和其他一些东西处理。

无论如何二进制化如下,其中d和u是一些可以比较的数字:

String b = "";
for (int i = 0; i < u.length; u++) {
    if(d[i] < u[i]) {
        b[i] += '0';
    } else {
        b[i] += '1';
    }
}

目前如描述我有一个字符串,其中每个字符为0或1.

使用BigInteger给我一个对象,我可以在这里对两个值进行异或运算:

BigInteger bi = new BigInteger(b, 2);
(...)
BigInteger result = bi.xor(other_bi);

还有另一种方法可以实现我想做的事吗?我没有找到任何东西,但也许有一个我没找到的?

2 个答案:

答案 0 :(得分:6)

BitSet类更适合表示位序列。要设置位,您可以使用BitSet.set方法。

答案 1 :(得分:2)

将您的示例作为BitSet。

BitSet bs = new BitSet(u.length);
for (int i = 0; i < u.length; u++) 
    if(d[i] >= u[i]) 
       bs.set(i);

BitSet bs2 = ...
bs2.xor(bs); // changes and reuses bs2.
int bitsSet = bs2.cardinality();
int firstSetBit = bs2.nextSetBit(0);