Question

I am doing some experiments on my own about quantization processes etc.

I try to implement a binarization process which makes a "binary string" which will get processed by xor afterwards and some other stuff.

Anyhow the binarization is the following, where d and u are some numbers that will get compared:

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

Currently like described I have a string where each character is 0 or 1.

Using a BigInteger gives me an Object where I can XOR two values against each other:

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

Is there another way to achieve what I want to do? I didn't find anything but maybe there is one I have not found?

Was it helpful?

Solution

The BitSet class is more appropriate for representing a sequence of bits. To set a bit you would use the BitSet.set method.

OTHER TIPS

Taking your example as a 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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top