Yes, I see it now.
in reply to Re^6: Need a faster way to find matches
in thread Need a faster way to find matches
I must have misunderstood your condition "do not share any common bits" to mean ~($i1 XOR $i2) instead of $i1 & $i2.
For example, the two numbers in the first example do "share" common bits in the sense that both bits are 0.
In this case the only valid value for a given $i1 would be ~$i1 and nothing else.
However, if the condition is $i1 & $i2 == 0, then you're right, there are several possible $i2's.
Still, you may be still better off generating the list of possible values for every existing element of the array and check those instead of blindly doing all comparisons.