Здесь можно использовать дерево.
Создайте двоичное дерево при вводе чисел с MSB вверху.
Теперь для каждого числа, например, 1011, пройдитесь по дереву за 0100 ...
В любой момент, если идеальный комплимент не найден, компромисс для того, что доступно, продолжайте.