An (sorted) array consists of (a random amount of) random unique integers between 0 and 2^32 - 1.

In base 2 the array could, for example, look like this:

Code:

00000000000000000000000000000100
00000000000000000000000000000110
00000000000000000000000000010010
...
11111111111011011111100101001100

Given another random integer x between 0 and 2^32 - 1, how do I find the integer in the array that shares the most ones and zeros with x in the same position (in binary notation)? If there are multiple cases, any of the cases will do.

The following two numbers will, for example, differ in only one place:

Code:

00000000000000000000000000010010
00000000000000000000000000110010

I cannot check them one at a time, I need to do it faster. A binary search-style approach would be perfect.

Feel free to transform the array and x into something else.