我正在自己做一些关于量化过程等的实验。
我尝试实现二进制化过程,该过程产生一个“二进制字符串”,然后由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);
还有另一种方法可以实现我想做的事吗?我没有找到任何东西,但也许有一个我没找到的?
答案 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);