1

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

我尝试实现一个二进制化过程,该过程会生成一个“二进制字符串”,然后由 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。

使用 aBigInteger给了我一个对象,我可以在其中对两个值进行异或:

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

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

4

2 回答 2

6

该类BitSet更适合表示位序列。要设置一点,您将使用该BitSet.set方法。

于 2013-10-02T14:51:32.543 回答
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);
于 2013-10-02T14:57:58.847 回答